Elm 0.17

Jun 22, 2016 12:52

Elm - это хаскелеподобный чистый функциональный язык для всяких безобразий в браузере, т.е. "компилирующийся" в JavaScript. Знаменит прежде всего тем, что на нем написан визуализатор квантовой механики из предыдущего поста. :)
Три года назад я писал про тогдашний Elm, с тех пор он заметно изменился, а в последней на сегодня версии произошло ( Read more... )

elm, fp

Leave a comment

Comments 20

chaource June 22 2016, 06:33:58 UTC
Я когда-то тоже фанатѣлъ отъ Elm. Но сейчасъ я недоволенъ, что убрали типъ сигналовъ. Стало все еще болѣе куцымъ, чѣмъ было раньше. Работа съ асинхронными процессами теперь будетъ еще болѣе ad hoc, чѣмъ раньше.

По-моему, когда нѣтъ явныхъ сигналовъ въ видѣ функтора, то работа программы становится совершенно загадочной и таинственной. Хотя рантаймъ возможно и сталъ болѣе эффективнымъ, потому что у программиста стало меньше функцiй, и рантаймъ можетъ больше оптимизировать.

А гдѣ модуль для работы cъ WebGL?

Reply


chaource June 22 2016, 06:49:02 UTC
По-моему, когда нѣтъ явныхъ сигналовъ въ видѣ функтора, то работа программы становится совершенно загадочной и таинственной. Наиболѣе, на мой взглядъ, логичный способъ думать про "колесо Сансары", это рекурсивно опредѣлить сигналы Model, View, Input другъ черезъ друга. Сигналы должны быть монадой (чего въ Elm никогда не было), должно быть можно рекурсивно опредѣлять сигналы (этого въ Elm тоже не было и нѣтъ), и тогда все получается примѣрно так ( ... )

Reply

thedeemon June 22 2016, 12:30:03 UTC
Эту схему наверняка можно на PureScript выразить и попробовать использовать, тогда станет ясно, лучше она или хуже.

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

Reply

kika June 23 2016, 06:26:18 UTC
> Завтра, кстати, я иду на встрѣчу съ создателемъ Elm и буду тамъ что-нибудь писать на новомъ Elm.

Я смотрел давно на ваш аватар и все тужился вспомнить где же я вас видел. Теперь понятно. Вас Сергей зовут?

Reply


ex_juan_gan June 22 2016, 06:57:48 UTC
Надо же. Я тогда сходил разок на митап, не был впечатлен.

Спасибо! Более убедительно, чем purescript.

Reply

kika June 23 2016, 06:27:49 UTC
Фигассе. Вот что с людьми делает травма явой и ее фреймворками.

Reply


sassa_nf June 22 2016, 07:24:52 UTC
а чем отличается тайпкласс от type alias навроде примера с Рунге-Кутта в следующем посте?

Reply

thedeemon June 22 2016, 07:59:35 UTC
В основном тем, что неявно передается. type alias там просто record описывает, экземпляр ее надо явно в функцию передать.

Reply

sassa_nf June 22 2016, 08:43:11 UTC
ага, ну, в Агде тоже. Собственно, тайпклассы хороши, когда по единственному экземпляру для каждого типа.

Reply


swizard June 22 2016, 12:45:15 UTC
> Но общие впечатления очень положительные. Язык стал проще и одновременно удобнее.

Всё так. Но, с другой стороны, автор взял направление на отвязывание Elm от JS, типа, это всего лишь одна из платформ, в которую мы компилируемся. А дальше будет WebAssemply, потом ещё что-то, и тд.

На основании этого в 0.17 выпилили все пользовательские нативные модули, и дальше интероп со средой выполнения предлагается делать исключительно через порты, команды и подписки.

Как бы, не то, чтобы я имел какое-то принципиальное философское мнение по этому вопросу, но при портировании существующего софта на новый Elm теперь мне надо вообще всё нафиг переписывать :(

Reply

thedeemon June 22 2016, 13:05:48 UTC
В смысле выпилили?
Вот я смотрю на пакет elm-linear-algebra, там почти весь код имеет вид
inverseOrthonormal : Mat4 -> Mat4
inverseOrthonormal = Native.MJS.m4x4inverseOrthonormal

и все подобные упомянутые ф-ии из Native.MJS живут в соответствующем обычном .js файле.

Reply

swizard June 22 2016, 13:56:23 UTC
Им самим можно (иначе как бы они webapi делали), а пользователям уже нет. Раньше была подробная инфа как эти нативные модули писать и связывать с Elm, щас токо через javascript-as-service: http://guide.elm-lang.org/interop/javascript.html , а все остальное должно быть в elm-lang.

Вот мужик, например, с горя начал делать свой elm на платформе purescript'а: https://github.com/rgrempel/elm-web-api/issues/17

Reply

wizzard0 June 28 2016, 02:29:04 UTC
Closed world assumption это печалька, да. Все более-менее успешные языки имеют развитый FFI, unsafe и прочие костыли для построения своих интерфейсов с внешним миром

Reply


Leave a comment

Up