Очищение Скалы.

Apr 10, 2012 21:55

Забабахали тут с akuklev программу превращения Scala в действительно няшный функциональный язык программирования, не хуже всяких там цацкелей, даже лучше.

Procedure Typing for Scala
View more presentations from akuklev

scala, fp

Leave a comment

Comments 39

ex_juan_gan April 10 2012, 21:09:37 UTC
А! Вот оно, вот оно!!!

Reply

sorhed April 10 2012, 21:17:24 UTC
Надеюсь, прокатит. :)

Reply


ex_juan_gan April 11 2012, 01:40:49 UTC
Гениально.

Вы не хотите записаться с докладом на strangeloop? В сентябре будет; вчерась объявили call for papers.

Я это прочитаю пару раз, да, наверное, попробую в упрощённом виде изложить на нашей скальной встрече. Роскошно, роскошно! Я ходил думал, как бы нам это приспособить нечистоту... ну вот, решение. Ура!

Reply

sorhed April 11 2012, 16:06:39 UTC
Как-то страшно с такими монстрами рядом выступать. :) Впрочем, закинуть можно.

Reply

ex_juan_gan April 12 2012, 01:05:54 UTC
Закиньте.

Reply


nivanych April 11 2012, 05:50:26 UTC
Читаю. Невольно, транслирую в Haskell...
Признавайтесь, некоторые картинки из статей по Arrows слямзили? ;-)
Про Arrows, как будто, при написании статьи забыли, хотя и есть про них в списке литературы...
И сравниваете только с монадками, что плохо...

Reply

akuklev April 11 2012, 08:59:52 UTC
Признаёмся, слямзили. :-)
> Про Arrows, как будто, при написании статьи забыли, хотя и есть про них в списке литературы...
Фигасе забыли, вся же статья про Generalized Arrows (AKA Circuitries, название родом из квантововычислистов, среди функциональщиков не прижившееся, на мой взгляд жутко зря).

На слайде 27 написано, что мы в основном будем рассматривать Special Case:
>>>>
Arrow circuitries3: circuitries generalising =>[Pure] .
[...]
____
3: AKA plain old “arrows” in Haskell and scalaz.
<<<<

Reply

nivanych April 11 2012, 09:10:40 UTC
При сравнении с Haskell, почему-то, упоминаются недостатки монад.
А про Haskell'ные Arrows ни слова. Врядли я такое пропустил, хотя и может быть...

Reply

akuklev April 11 2012, 09:15:07 UTC
Да вот оно, на слайде 26. Но вы конечно навели на идею, что сноски мало и надо как-то ярче отметить, что то что мы предлагаем стрелки и есть, и популяризованы они, конечно, Хаскелем, до него про всю это Freyd-Kleisli-машинерию знали полтора землекопа.

Reply


fake_acc April 11 2012, 07:10:15 UTC
Скала - это попытка дать жавообезьяне ружьё вместо дубины. Однако дизайнеры ружья решили, что если сделать его максимально похожим на дубину, обезьянам будет легче привыкнуть. В итоге и когда стреляешь - не удобно, и когда как дубиной машешь - ствол из рук выскальзывает.

Reply


thesz April 11 2012, 09:46:11 UTC
>...enables:
>- implicit parallelisability
Во-первых, it doesn't, во-вторых, что за слово такое?

В-третьих, про разделение чистых и не очень функций: "Не советую. Сьедят",

PS
И применение circuitry для логических схем так себе затея.

Reply

sorhed April 11 2012, 09:51:14 UTC
> Во-первых, it doesn't

Пуркуа?

> во-вторых, что за слово такое?

http://en.wiktionary.org/wiki/parallelizability

А через s потому что презентация для Scala Days в Лондоне, пришлось по-британски писать.

> В-третьих, про разделение чистых и не очень функций: "Не советую. Сьедят".

Постоянные читатели моего ЖЖ знают про мою нелюбовь к творчеству Стругацких вообще и к этому произведению особенно.

> И применение circuitry для логических схем так себе затея.

А нам нравится, хотя в целом мы, конечно, для другого всё затевали.

В общем, аргументы где? Требую тяжёлоатлетической дискуссии.

Reply

thesz April 11 2012, 10:18:14 UTC
Потому, что для распараллеливания необходимо знать стоимость операций. Просто пометить, как "исполняй параллельно" мало.

Про "съедят" - это 1) тяжесть использования любого Java кода из любого места программы, поэтому будут стонать и 2) поскольку любой Java код уже нельзя использовать из любого места программы, то и надобность в Java в любом месте отпадает и можно оставить её в нужным местах, поэтому можно смело переходить на Хаскель, где практически всё уже есть.

Reply

sorhed April 11 2012, 13:15:40 UTC
> Потому, что для распараллеливания необходимо знать стоимость операций.

При небольшом оверхеде принудительное распараллеливание всегда выгоднее, даже если напрочь ошибиться с оценкой стоимости; а эвристика будет (никто, кроме того, не запрещает делать аннотации с оценкой в нужных местах). Макрос eval может быть произвольной сложности, причём его могут писать не только разработчики компилятора, он может быть определён в сторонних библиотеках.

> тяжесть использования любого Java кода из любого места программы

Прекрасно его можно использовать в старом режиме, просто он будет императивно где-нибудь исполняться.

А что касается недостатков Haskell для этого, то сейчас akuklev придёт, а то я столько не подниму.

Reply


Leave a comment

Up