metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-10-11 07:58 pm
Entry tags:

Clojure, лямбды, черви, термы

(#(% %) #(% %)) - StackOverflow на кложуре
((fn [x] (x x)) (fn [x] (x x))) - StackOverflow на кложуре (более явная запись предущего)
на хаскеле даже на \x -> x x сразу ругается тайпчекер

(λx.xx)(λx.xx) - это оно же?

[identity profile] gds.livejournal.com 2012-10-11 06:50 pm (UTC)(link)
в просто-типизированном -- не типизируется, конечно.
Но можно и похитрее типы взять для лямбда-исчисления.
$ ocaml
        Objective Caml version 3.12.1+rc1

# ((fun x -> (x x)) (fun x -> (x x)));;
Error: This expression has type 'a -> 'b
       but an expression was expected of type 'a
# #rectypes;;   <-----  magic here
# ((fun x -> (x x)) (fun x -> (x x)));;
^CInterrupted.
# let f () = ((fun x -> (x x)) (fun x -> (x x)));;
val f : unit -> 'a = <fun>
# fun x -> x x;;
- : ('a -> 'b as 'a) -> 'b = <fun>
#