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] http://users.livejournal.com/_slw/ 2012-10-11 05:11 pm (UTC)(link)
кажется просто (λx.xx)
(deleted comment) (Show 6 comments)

[identity profile] lomeo.livejournal.com 2012-10-11 07:53 pm (UTC)(link)
В статических можно эмулировать с помощью изоморфных типов. Например, определив тип
newtype F a = F (F a → a)

мы получили тип изоморфный F a → a, т.е. тип, который можно применять к себе. А значит можем написать \x → x x как \(F f) → f (F f)), а полный Y-комбинатор как
y = (\(F f) → f (F f)) (F (\(F f) → f (F f)))

[identity profile] permea-kra.livejournal.com 2012-10-12 08:32 am (UTC)(link)
Prelude> :t let f x = x . f x in f
let f x = x . f x in f :: (b -> b) -> a -> b

[identity profile] migmit.livejournal.com 2012-10-12 02:28 pm (UTC)(link)
Гы. Мой любимый Perl-like Haskell:
newtype Y a = Y {(|$) :: Y a -> a}
y = let z w f = f $ (w |$ w) f in Y z |$ Y z 

Y-комбинатор. Без скрытых fix-ов.