Size: a a a

F# Flood: Робин Бобин чат

2018 June 13

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
Once we write this down, F* automatically proves that factorial satisfies all these properties.
источник

АУ

Анна Удовиченко in F# Flood: Робин Бобин чат
Ayrat Hudaygulov
The factorial function is, however, a total function on non-negative integers. We can ask F* to check that this is indeed the case by writing:

val factorial: x:int{x>=0} -> Tot int
а, ты ему сам говоришь условия, а он проверяет
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
да. Но т.к. есть тайп инфиринс, то функция примет такой тип
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Там вначале пишется сигнатура с условиями
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
т.е. ты аннотируешь условие и это условие идёт в тип функции
источник

АУ

Анна Удовиченко in F# Flood: Робин Бобин чат
Ну ладно, кажется я немного поумнела
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Вот прямо в спеке ихней
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
В общем, такой способ метаданные вкрутить
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Как я понимаю
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
ну. Почти) Там в типе может быть отображено что функция расходится например или аллоцирует!
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Ну метаданные же
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
Ну если ты типы называешь метаданными, то пусть будут метаданными)))
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Так.Стоп
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Мы сначала описываем тип функции, потом его имплементируем?
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
это называется refinment type типа
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
ype f:filename{canRead f} is a refinement of the type filename
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
т.е. можно быстро создавать подмножества типов, которые тоже типы очевидно (потому что тоже множества)
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Штука интересная, но  чтобы применить в продакшне, надо быть очень умным
источник

VS

Vasily Shapenko in F# Flood: Робин Бобин чат
Кмк
источник

AH

Ayrat Hudaygulov in F# Flood: Робин Бобин чат
Так точно, оно неприменимо для 99.99999% задач
источник