もうひとつのfix

id:lethevert:20050902:p2より。

id:SaitoAtsushi:20050902に、Scheme版がありますけど、Clean版と変わらないな。やっぱり、JavaScriptだからこう書けるのか?

というわけで、やってみました。

(define (fix g)
  (begin
   (define (f x) (f x))
   (set! f (g f))
   f))

どちらにせよオリジナルのJavaScript版そのままなカンジ。
LispやJavaScriptは関数型に数えられることもあるけど、原理主義に陥っていないところが魅力のひとつかもしれない。