Влияние побочных эффектов.

Mar 02, 2011 23:56

Как побочные эффекты мешают выводу типов, а точнее, почему в OCaml/F# взаимно рекурсивные определения надо помещать в группы let ... and ... and ....

ocaml, системы типов

Leave a comment

potan March 3 2011, 09:35:15 UTC
Ну я бы он простого let (не let rec) и в Haskell бы не отказался.
Вместо let x = ... in ... писать flip ($) ... (\x -> ...) не эстетично.

Reply

thesz March 3 2011, 09:38:27 UTC
Это ты о чём вообще?

Reply

potan March 3 2011, 09:49:24 UTC
О том, что let ... and ... and ... полезны и так.

Reply

thesz March 3 2011, 09:54:58 UTC
Чем это они полезны, если можно без них обойтись совершенно свободно, как это сделано в Хаскеле?

Reply

potan March 3 2011, 10:25:27 UTC
Я же написал - неэстетичностью. Ну некрасиво смотрится этот flip ($), вместо letа.

Reply

thesz March 3 2011, 19:39:51 UTC
Зачем ты пишешь flip $ вместо let?

Я совершенно не понимаю твоей претензии.

Reply

potan March 4 2011, 08:34:27 UTC
Что бы скрыть одно определение переменной и ввести новое с нем же именем, но вычисленное с использованием скрытой.

Reply

thesz March 4 2011, 09:04:59 UTC
И тебе это часто надо? Вот сколько раз на миллион строчек?

Reply

potan March 4 2011, 10:19:08 UTC
В Scheme где-то в одной из 5-6 функций этот прием я применяю. На Haskell проще завести переменную с новым именем и внимательно следить, что бы их не перепутать.

Reply

migmit March 4 2011, 19:16:46 UTC
В do-блоках переменные так себя и ведут, "<-" рекурсии не допускает.

Reply

thesz March 4 2011, 20:12:20 UTC
За исключением специально выделенных случаев. ;)

Reply

migmit March 5 2011, 10:10:35 UTC
Ы?

Reply

thesz March 5 2011, 21:18:32 UTC
Recursive Do.

Reply

migmit March 5 2011, 21:24:04 UTC
А, ну дык то с расширениями.

Reply

thesz March 4 2011, 20:14:26 UTC
То есть, ты пользуешься потенциально опасной практикой кодирования, вызванной недостатками конкретного языка, и желаешь, чтобы и в Хаскеле тебе было позволено делать так же.

Узнаю стиль Потанина. ;)

Reply

potan March 5 2011, 08:17:04 UTC
Я пользуюсь безопастной (не позволяющей перепутать переменные) практикой, и хочу что бы Haskell мне не мешал ей пользоваться.

Reply


Leave a comment

Up