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] migmit.livejournal.com 2012-10-13 12:40 pm (UTC)(link)
> Просто они в конструкторы типов спрятаны.

Они не могут быть спрятаны в конструкторы типов. Конструкторы типов — вещь абсолютно примитивная, никакой логики в них нет. Конструктор просто навешивает бирку на значение.

[identity profile] miserakl.livejournal.com 2012-10-13 02:15 pm (UTC)(link)
Если стереть типы, то да. Но вообще-то у нас тут рекурсивный тип, и в каждое применение конструктора или сопоставление с образцом зашито явное применение изоморфизма между рекурсивным типом и его одношаговой развёрткой. Этот изоморфизм мы не смогли бы построить сами, если бы компилятор не умел делать вид, что он существует.

[identity profile] miserakl.livejournal.com 2012-10-13 02:23 pm (UTC)(link)
* Прошу прощения, это как раз называется изорекурсивные типы, а не экви-.