applicative-order or normal-order evaluation

โจทย์นี้ผมเจอใน SICP แต่ผมไม่เคยเขียนพวก functional programming พี่ๆช่วยดูกันหน่อยนะครับ
(define (p) (p))

(define (test x y)
(if (= x 0)
0
y))

then evaluates the expression

(test 0 (p))

แต่ผมสงสัยว่า (define (p) (p)) มันคืออะไรครับ

form ของการ define function คืออย่างนี้ใช่ไหมครับ

(define (proc-name param) (body))

และถ้าเราจะเรียก evaluate function นั้น เราก็ต้องสั่ง

(proc-name param)

ดังนั้น

(define (p) (p))

ก็คือ define function ชื่อ p ที่ภายใน recursive เรียกใช้ function p (ตัวเอง)
ผลก็คือ ถ้าเราสั่ง evaluate
(p)
ก็จะเกิด recursive ไม่รู้จบ

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น