LINUX.ORG.RU

История изменений

Исправление dave, (текущая версия) :

Теоретически return, while, if, match, try-catch, try-finally должно быть в ScalaZ. Хотя обычно хватает лишь map, flatMap и filter.

К слову, return - это специфика самого вычисления. Его не определить извне.

С while, for (обычный цикл) есть такой интересный нюанс. Их можно определить в общем виде, и такие определения подойдут для абсолютно любой монады, но для многих простых монад эти функции можно определить куда эффективнее, что позволяет делать F#. Try-функции, вообще, сложная вещь.

Так что, ScalaZ не подходит уже поэтому, не говоря о синтаксической поддержке, имитирующей то, как если бы эти конструкции применялись в «обычном» коде, иллюзию чего дает нам F#. Новички даже не всегда различают, где идет обычный код, а где монадические выражения.

Определенно, есть еще над чем поработать в Scala, но я боюсь, что этого никогда не добавят в язык. Поезд ушел. Кардинально менять язык уже поздно, да и далеко не всем нужны монады, хотя Future - довольно раскрученная вещь, и многие до сих пор пытаются приделать к Future удобный синтаксический сахар. Такая проблема была бы решена раз и навсегда, если бы были computation expressions по типу F#

Исходная версия dave, :

Теоретически return, while, if, match, try-catch, try-finally должно быть в ScalaZ. Хотя обычно хватает лишь map, flatMap и filter.

К слову, return - это специфика самого вычисления. Его не определить извне.

С while, for (обычный цикл), try-catch и try-finally есть такой интересный нюанс. Их можно определить в общем виде, и такие определения подойдут для абсолютно любой монады, но для многих простых монад эти функции можно определить куда эффективнее, что позволяет делать F#.

Так что, ScalaZ не подходит уже поэтому, не говоря о синтаксической поддержке, имитирующей то, как если бы эти конструкции применялись в «обычном» коде, иллюзию чего дает нам F#. Новички даже не всегда различают, где идет обычный код, а где монадические выражения.

Определенно, есть еще над чем поработать в Scala, но я боюсь, что этого никогда не добавят в язык. Поезд ушел. Кардинально менять язык уже поздно, да и далеко не всем нужны монады, хотя Future - довольно раскрученная вещь, и многие до сих пор пытаются приделать к Future удобный синтаксический сахар. Такая проблема была бы решена раз и навсегда, если бы были computation expressions по типу F#