Забабахали тут с akuklev программу превращения Scala в действительно няшный функциональный язык программирования, не хуже всяких там цацкелей, даже лучше.
Вы не хотите записаться с докладом на strangeloop? В сентябре будет; вчерась объявили call for papers.
Я это прочитаю пару раз, да, наверное, попробую в упрощённом виде изложить на нашей скальной встрече. Роскошно, роскошно! Я ходил думал, как бы нам это приспособить нечистоту... ну вот, решение. Ура!
Читаю. Невольно, транслирую в Haskell... Признавайтесь, некоторые картинки из статей по Arrows слямзили? ;-) Про Arrows, как будто, при написании статьи забыли, хотя и есть про них в списке литературы... И сравниваете только с монадками, что плохо...
Признаёмся, слямзили. :-) > Про Arrows, как будто, при написании статьи забыли, хотя и есть про них в списке литературы... Фигасе забыли, вся же статья про Generalized Arrows (AKA Circuitries, название родом из квантововычислистов, среди функциональщиков не прижившееся, на мой взгляд жутко зря).
На слайде 27 написано, что мы в основном будем рассматривать Special Case: >>>> Arrow circuitries3: circuitries generalising =>[Pure] . [...] ____ 3: AKA plain old “arrows” in Haskell and scalaz. <<<<
Да вот оно, на слайде 26. Но вы конечно навели на идею, что сноски мало и надо как-то ярче отметить, что то что мы предлагаем стрелки и есть, и популяризованы они, конечно, Хаскелем, до него про всю это Freyd-Kleisli-машинерию знали полтора землекопа.
Скала - это попытка дать жавообезьяне ружьё вместо дубины. Однако дизайнеры ружья решили, что если сделать его максимально похожим на дубину, обезьянам будет легче привыкнуть. В итоге и когда стреляешь - не удобно, и когда как дубиной машешь - ствол из рук выскальзывает.
Потому, что для распараллеливания необходимо знать стоимость операций. Просто пометить, как "исполняй параллельно" мало.
Про "съедят" - это 1) тяжесть использования любого Java кода из любого места программы, поэтому будут стонать и 2) поскольку любой Java код уже нельзя использовать из любого места программы, то и надобность в Java в любом месте отпадает и можно оставить её в нужным местах, поэтому можно смело переходить на Хаскель, где практически всё уже есть.
> Потому, что для распараллеливания необходимо знать стоимость операций.
При небольшом оверхеде принудительное распараллеливание всегда выгоднее, даже если напрочь ошибиться с оценкой стоимости; а эвристика будет (никто, кроме того, не запрещает делать аннотации с оценкой в нужных местах). Макрос eval может быть произвольной сложности, причём его могут писать не только разработчики компилятора, он может быть определён в сторонних библиотеках.
> тяжесть использования любого Java кода из любого места программы
Прекрасно его можно использовать в старом режиме, просто он будет императивно где-нибудь исполняться.
А что касается недостатков Haskell для этого, то сейчас akuklev придёт, а то я столько не подниму.
Comments 39
Reply
Reply
Вы не хотите записаться с докладом на strangeloop? В сентябре будет; вчерась объявили call for papers.
Я это прочитаю пару раз, да, наверное, попробую в упрощённом виде изложить на нашей скальной встрече. Роскошно, роскошно! Я ходил думал, как бы нам это приспособить нечистоту... ну вот, решение. Ура!
Reply
Reply
Reply
Признавайтесь, некоторые картинки из статей по Arrows слямзили? ;-)
Про Arrows, как будто, при написании статьи забыли, хотя и есть про них в списке литературы...
И сравниваете только с монадками, что плохо...
Reply
> Про Arrows, как будто, при написании статьи забыли, хотя и есть про них в списке литературы...
Фигасе забыли, вся же статья про Generalized Arrows (AKA Circuitries, название родом из квантововычислистов, среди функциональщиков не прижившееся, на мой взгляд жутко зря).
На слайде 27 написано, что мы в основном будем рассматривать Special Case:
>>>>
Arrow circuitries3: circuitries generalising =>[Pure] .
[...]
____
3: AKA plain old “arrows” in Haskell and scalaz.
<<<<
Reply
А про Haskell'ные Arrows ни слова. Врядли я такое пропустил, хотя и может быть...
Reply
Reply
Reply
>- implicit parallelisability
Во-первых, it doesn't, во-вторых, что за слово такое?
В-третьих, про разделение чистых и не очень функций: "Не советую. Сьедят",
PS
И применение circuitry для логических схем так себе затея.
Reply
Пуркуа?
> во-вторых, что за слово такое?
http://en.wiktionary.org/wiki/parallelizability
А через s потому что презентация для Scala Days в Лондоне, пришлось по-британски писать.
> В-третьих, про разделение чистых и не очень функций: "Не советую. Сьедят".
Постоянные читатели моего ЖЖ знают про мою нелюбовь к творчеству Стругацких вообще и к этому произведению особенно.
> И применение circuitry для логических схем так себе затея.
А нам нравится, хотя в целом мы, конечно, для другого всё затевали.
В общем, аргументы где? Требую тяжёлоатлетической дискуссии.
Reply
Про "съедят" - это 1) тяжесть использования любого Java кода из любого места программы, поэтому будут стонать и 2) поскольку любой Java код уже нельзя использовать из любого места программы, то и надобность в Java в любом месте отпадает и можно оставить её в нужным местах, поэтому можно смело переходить на Хаскель, где практически всё уже есть.
Reply
При небольшом оверхеде принудительное распараллеливание всегда выгоднее, даже если напрочь ошибиться с оценкой стоимости; а эвристика будет (никто, кроме того, не запрещает делать аннотации с оценкой в нужных местах). Макрос eval может быть произвольной сложности, причём его могут писать не только разработчики компилятора, он может быть определён в сторонних библиотеках.
> тяжесть использования любого Java кода из любого места программы
Прекрасно его можно использовать в старом режиме, просто он будет императивно где-нибудь исполняться.
А что касается недостатков Haskell для этого, то сейчас akuklev придёт, а то я столько не подниму.
Reply
Leave a comment