Size: a a a

F# Flood: я вас категорически приветствую!

2020 March 27

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
Prunkles Dreemurr
Вообще, изначально задача была в том, чтобы сделать тривиальным map, который каждый прекрасно понимает и без какого-либо погружения в тк. Но потом я вспомнил, мол, мап можно выразить через байнд и пьюр, а байнд мне тоже может пригодится. Так почему бы не сделать так?
на данном этапе это так себе идея. если ты разовьешь свой код до того момента, когда оно тебе потребуется, то ты это легко заимплементишь. дело в том, что код читают не так, как ты его писал, а сверху вниз. поэтому многие куски будут дико загадочными, типа, зачем это все нужно?
источник

SB

S B in F# Flood: я вас категорически приветствую!
Это касается так же и абстракций попроще: например, моноида.
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
S B
Не знаю уместно это или нет, но я на всякий случай тебе проясню: дело далеко не в том, чтобы у тебя был bind и return и даже того факта, что они удовлятворяют особой магической сигнатуре тоже недостаточно. У них еще должна быть "правильная" семантика, которую математики в лучших своих традициях определяют как набор инвариантов - логических утверждений, которые истины в любом "состоянии" системы. Проверить выполнение этих требований погромистом чаще, реже программистом компилятор не может, поскольку это NP-сложная задача. Как следствие, мало найти что-то, что выражается как return и bind, надо еще чтобы они в этом конкретном случае удовлетворяли этим непреложным законам.
очень уместно
источник

SB

S B in F# Flood: я вас категорически приветствую!
все видели? меня дедушка лайкнул
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
причем с чисто практической точки зрения в эфшарпе нет возможности дать статическую гарантию в общем виде, то есть система типов вообще никак не помогает с проверкой этих законов.
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
S B
все видели? меня дедушка лайкнул
время такое, что поделать
источник

SB

S B in F# Flood: я вас категорически приветствую!
Shub Niggurath
причем с чисто практической точки зрения в эфшарпе нет возможности дать статическую гарантию в общем виде, то есть система типов вообще никак не помогает с проверкой этих законов.
да и в Хаскеле тоже на самом деле, не смотря на всю их систему типов.
источник

DS

Doge Shibu in F# Flood: я вас категорически приветствую!
Shub Niggurath
причем с чисто практической точки зрения в эфшарпе нет возможности дать статическую гарантию в общем виде, то есть система типов вообще никак не помогает с проверкой этих законов.
Обычно для такого используют quickcheck или доказывают руками, но понятно, что это полумеры.
источник

SB

S B in F# Flood: я вас категорически приветствую!
Doge Shibu
Обычно для такого используют quickcheck или доказывают руками, но понятно, что это полумеры.
NP-сложная задача от этого таковой не перестает быть. Ну ты понЕл...
источник

SB

S B in F# Flood: я вас категорически приветствую!
короче, суппорт компиляторов в этом нелегком деле нам не видать.
источник

DS

Doge Shibu in F# Flood: я вас категорически приветствую!
Prunkles Dreemurr
Вообще, изначально задача была в том, чтобы сделать тривиальным map, который каждый прекрасно понимает и без какого-либо погружения в тк. Но потом я вспомнил, мол, мап можно выразить через байнд и пьюр, а байнд мне тоже может пригодится. Так почему бы не сделать так?
Плюс реализации подобных вещей в том, что в каком-нибудь хаскеле или скале ты мог бы воспользоваться кучей чужих общих функций, которые работают для любого функтора, монады и т.п.

В F# такого особо нет.
источник

DS

Doge Shibu in F# Flood: я вас категорически приветствую!
S B
короче, суппорт компиляторов в этом нелегком деле нам не видать.
Вообще видать - тебе в зависимые типы. Там можно доказать с тем, что компилятор проверит исполнение данных законов
источник

DS

Doge Shibu in F# Flood: я вас категорически приветствую!
Doge Shibu
Плюс реализации подобных вещей в том, что в каком-нибудь хаскеле или скале ты мог бы воспользоваться кучей чужих общих функций, которые работают для любого функтора, монады и т.п.

В F# такого особо нет.
Поэтому возникает вопрос, имеет ли смысл заранее реализовывать методы, которые тебе не факт, что понадобятся и от реализации которых ты никаких преимуществ не получишь.
источник

SB

S B in F# Flood: я вас категорически приветствую!
Doge Shibu
Вообще видать - тебе в зависимые типы. Там можно доказать с тем, что компилятор проверит исполнение данных законов
ох ничосе. не знал ничего такого. и как компилятор это сделает? переберет 2^32 значений на каждую конфигурацию int'а? очевидно, нет. докажет по индукции? окей, но тогда отвественность опять будет лежать по погромисте.
источник

DS

Doge Shibu in F# Flood: я вас категорически приветствую!
S B
ох ничосе. не знал ничего такого. и как компилятор это сделает? переберет 2^32 значений на каждую конфигурацию int'а? очевидно, нет. докажет по индукции? окей, но тогда отвественность опять будет лежать по погромисте.
Он проверит доказательство, точно так же как он тайпчекает программу
источник

SB

S B in F# Flood: я вас категорически приветствую!
Doge Shibu
Он проверит доказательство, точно так же как он тайпчекает программу
Надо почитать про это все. Для меня пока темный лес.
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
S B
Надо почитать про это все. Для меня пока темный лес.
Idris
источник

DS

Doge Shibu in F# Flood: я вас категорически приветствую!
+ или Agda
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
офигенный язык, все никак не засяду поплотнее
источник

SN

Shub Niggurath in F# Flood: я вас категорически приветствую!
Doge Shibu
+ или Agda
Idris книжку имеет офигенну, по Agda есть что-то похожее?
источник