deniok: (Default)
[personal profile] deniok
Три задачки с экзамена, в порядке усложнения условия.

Написать замкнутый терм типа (a -> b) -> ((a -> b) -> b) -> b.

Написать замкнутый терм типа (a -> b) -> ((a -> b) -> b) -> b, которому нельзя приписать тип c -> (c -> b) -> b.

Написать замкнутый терм с наиболее общим типом (a -> b) -> ((a -> b) -> b) -> b.

Date: 2012-06-28 03:01 pm (UTC)
From: [identity profile] slobin.livejournal.com

  1. \f g -> g f
  2. \f g -> g (\x -> f x)
  3. \f g -> g(\x -> head[f x, g f])

(я не настоящий хаскелист, я каску на стройке нашёл, если что)

... Управление текстовым редактором в нетрезвом состоянии ...

Date: 2012-06-28 03:05 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
Да, так, только последнее желательно без всяких внешних конструкций типа head и []. В чистой лямбде.

Date: 2012-06-28 03:09 pm (UTC)
From: [identity profile] slobin.livejournal.com
Я сам понимаю, что желательно. Но пока торможу. :-(

... Какой я математик? Я флюктуация. ...

Date: 2012-06-28 03:32 pm (UTC)
From: [identity profile] slobin.livejournal.com
\f g -> (\i -> i $ g (\x -> i $ f x))(\x -> x)

Наверное, это можно как-то покороче записать, но в таком виде оно мне в голову пришло.

... Старый, нищий, уродливый и бездарный оптимист ...

Date: 2012-06-28 04:28 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
Да, там ниже [livejournal.com profile] sassa_nf привёл более компактное решение.

Date: 2012-06-28 03:16 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
так а в 2. вроде не видно, что f обязательно a->b, а не a->c.

Date: 2012-06-28 03:26 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
а такого требования и нет.
Prelude> :t (\f g -> g (\x -> f x)) :: (a -> b) -> ((a -> b) -> b) -> b
(\f g -> g (\x -> f x)) :: (a -> b) -> ((a -> b) -> b) -> b
  :: (a -> b) -> ((a -> b) -> b) -> b
В системах в стиле Карри терму можно приписать бесконечное множество типов.

Date: 2012-06-28 03:49 pm (UTC)
From: [identity profile] slobin.livejournal.com
Может быть, стоит в формулировке вопроса заменить "терм типа" на "терм, которому можно приписать тип". Тогда как бы ясно, что можно и другие. Но я не знаю, какая терминология тут является общепринятой. :-(

... Три категории предвкушения чего-то приятного ...

Date: 2012-06-28 04:13 pm (UTC)
From: [identity profile] deni-ok.livejournal.com
Мне кажется, что это синонимы.

Date: 2012-06-28 03:53 pm (UTC)
From: [identity profile] sassa-nf.livejournal.com
ну я прочитал задание так, что если можно приписать a->d, то можно приписать c=a->d, а стало быть не подходит под условие второго вопроса.

Profile

deniok: (Default)
deniok

February 2022

S M T W T F S
  12345
6789101112
13141516171819
20212223 242526
2728     

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 21st, 2025 02:26 pm
Powered by Dreamwidth Studios