deniok: (typed lambda)
deniok ([personal profile] deniok) wrote2010-09-21 10:45 pm
Entry tags:

Задачка

Хорошая задачка из Herman Geuvers, Introduction to Type Theory (упражнение 3.17):

Построить лямбда-терм с типом ((α → β) → α) → (α → α → β) → β.

Ответы скринить не буду.

UPD: Имеется в виду просто типизированная лямбда. То есть fix и прочие Y-комбинаторы нам недоступны.

UPD2: Рекурсия ни в каком виде недоступна!

[identity profile] cadadr.livejournal.com 2010-09-21 08:49 pm (UTC)(link)
Ну, конкретно это можно и ручками выписать.

[identity profile] deni-ok.livejournal.com 2010-09-21 09:04 pm (UTC)(link)
я как раз и запостил её с этой целью

и ждал читеров с джином, а не с COQ :)

[identity profile] zelych.livejournal.com 2010-09-22 07:16 am (UTC)(link)
а зачем ручками-то?
Если поменять Prop на Set, можно extract сделать:
Coq> Extraction cheat.

let cheat h h0 =
  h0 (h (fun h1 -> h0 h1 h1)) (h (fun h1 -> h0 h1 h1))

Знаю, да

[identity profile] cadadr.livejournal.com 2010-09-22 11:18 am (UTC)(link)
Ручками --- в смысле, для тренировки ума.