โจทย์นี้ผมเจอใน 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 คืออย่างนี้ใช่ไหมครับ
และถ้าเราจะเรียก evaluate function นั้น เราก็ต้องสั่ง
ดังนั้น
ก็คือ define function ชื่อ p ที่ภายใน recursive เรียกใช้ function p (ตัวเอง)
ผลก็คือ ถ้าเราสั่ง evaluate
(p)ก็จะเกิด recursive ไม่รู้จบ