LINUX.ORG.RU

Haskell On a Horse — веб-фреймворк со стрелочками!

 , ,


1

0

Haskell On a Horse — новый веб-фреймворк для языка Haskell.
На текущий момент библиотека находится в стадии разработки, но хакеры могут попробовать её уже сейчас.
Библиотека выпускается под свободной лицензией BSD3. На сайте находятся интерактивные примеры и документация.

>>> Подробности



Проверено: Shaman007 ()
Последнее исправление: shimon (всего исправлений: 2)

Интересно, там внутри есть iteratees, как в snap.

Кстати, как можно перевести на русский слово «iteratee»?

anonymous
()

чуть не кажный день - новый фрейм-ворк
супер

kto_tama ★★★★★
()

Не взлетит.

anonymous
()
Ответ на: комментарий от KRoN73

> «итератешность»? :)

Нет :)

Эта форма словообразования в инглише такая же, как в словах «employer — employee» («рабочий — работодатель»). Тут такая же ситуация: это не итератор, а такая штука, которая управляет итерацией. Как это обозвать?

anonymous
()
Ответ на: комментарий от anonymous

> Кстати, как можно перевести на русский слово «iteratee»?

Итерирующая сущность ;)

Gukl ★★★
()
Ответ на: комментарий от anonymous

>это не итератор, а такая штука, которая управляет итерацией. Как это обозвать?

Итератитель:)

anonymous
()
Ответ на: комментарий от NuclearPhoenix

TCL on a Troll

надо Rivet в это переименовать. счас сварганю письмо разработчикам

jtootf ★★★★★
()

Быстрыми темпами увольняем PHPшников и нанимаем студентов-хацкелистов на еще меньшую зарплату ))

vertexua ★★★★★
()

Ждём стропила на Lissaac и IO.

anonymous
()
Ответ на: комментарий от Werehuman

Что меня бесит в популярном стиле написания на хаскелле - так это тысячи новых операторов типа <$> .|. 8=> (^_\\\ ||| <?> и т.п. Вот так вот глядишь в код и пытаешься понять, что это за хренота вообще. Почему не делают нормальные названия, как `div`, `shiftR` и т.п.?

Werehuman ★★
()
Ответ на: комментарий от Gukl

Итератель: среднее между итератором и надзирателем.

anonymous
()
Ответ на: комментарий от Werehuman

> Что меня бесит в популярном стиле написания на хаскелле - так это тысячи новых операторов

А где? «Новые» (т.е. не в base) операторы применяются почти только в EDSL. Считайте, что это новый миниязык :)

anonymous
()
Ответ на: комментарий от anonymous

> «employer — employee» («рабочий — работодатель»)

неа, это «работодатель» — «работник»

так что «iteratee» — это то, что итерируют.

moot ★★★★
()
Ответ на: комментарий от anonymous

>8===o и (_._) забыли

В этом веб-фреймворке оператор 8===o будет использоваться для вывода ошибки 404, а (_._) - при 500 и прочих падениях.

anonymous
()
Ответ на: комментарий от anonymous

> Эта форма словообразования в инглише такая же, как в словах «employer — employee» («рабочий — работодатель»). Тут такая же ситуация: это не итератор, а такая штука, которая управляет итерацией. Как это обозвать?

Суффикс -ee образует лицо или сущность, над которым выполняется действие

to call - вызывать caller - тот, кто вызывает callee - вызываемое, тот, кого вызывают

to iterate - повторять(перебирать) iterator - тот, кто повторяет(перебирает) iteratee - повторяемое(перебираемое)

(to employ - нанимать на(предоставлять) работу, employer - работодатель, employee - работник, тот кого нанимают. ближайший синоним - to use)

FeyFre ★★★★
()
Ответ на: комментарий от Werehuman

>Что меня бесит в популярном стиле написания на хаскелле - так это тысячи новых операторов типа <$> .|. 8=> (^_\\\ ||| <?> и т.п

+1

r ★★★★★
()

Это успех, я считаю.

out <- runHamlet -< [$hamlet|
    %div.oper
           $fo1$
           $label$
           %br
           $fo2$ $fo3$ |]
returnA -< (out, f <$> x <*> y)
ntp
()
Ответ на: комментарий от anonymous

>«Новые» (т.е. не в base) операторы применяются почти только в EDSL.

Недавеча как раз об этом думал. Пришел к выводу что возможность написать едсл еще не говорит о том что их надо хреначить куда надо и куда не надо. Потому что это подрывает по сути цель дсл - облегчение написания путем создания языка для соответствующей предметной области. А особенно когда этот дсл - вообще синтетически выдуманная штука понятная только придумщику. Любому пользователю такого дсл зачастую повеситься хочется копаясь в «видении мира» разраба.

r ★★★★★
()
Ответ на: комментарий от anonymous

>Эта форма словообразования в инглише такая же, как в словах «employer — employee»

А... А я подумал что-то про iterate + tee :)

KRoN73 ★★★★★
()
Ответ на: комментарий от r

> Недавеча как раз об этом думал. Пришел к выводу что возможность написать едсл еще не говорит о том что их надо хреначить куда надо и куда не надо.

Разумеется, что не надо на каждую бинарную функцию навешивать по оператору. Всё хорошо в меру. Просто в том посте я разглядел <$>, .|. и <?>, которые вполне себе понятны, мнемоничны и читаемы, если один раз заглянул в документацию.

Насчёт предметной области непонятно. Вот например, manage hooks в xmonad - это «предметная область» или нет? Вроде бы нет, а ведь удобно.

anonymous
()
Ответ на: комментарий от anonymous

> <$>,

Что она делает? Мне лень доку искать.

.|.

Что она делает? Мне лень доку искать.

<?>

Блин, дохрена что-то накопилось их. Пойду все-таки доку поищу... Ой, а где на их сайте полное описание API?

P.S. .|. и <?> у них там не встречается, это емнип из xmonad. Однако смысл <$> мне по-прежнему не ясен.

Werehuman ★★
()

Стрелочки уже есть, а где блекджек и шлюхи? :)

gns ★★★★★
()

Кстати, я только сейчас подумал.

Мне в этом фреймворке предлагается писать хтмл в виде

[$hamlet|
%html
  %body
    %div.content
что-ли?

Пока не будет шаблонизатора - не юзабельно совсем.

Werehuman ★★
()
Ответ на: комментарий от Werehuman

<$> - это $, «поднятый» в функтор ($ - это просто аппликация: f $ x <=> f x). На самом деле это очень удобно, когда пишешь в аппликативном стиле, вместе с <*>:

add3 :: Int -> Int -> Int -> Int
add3 x y z = x + y + z

-- Искусственный пример.
add3FromStdin :: IO Int
add3FromStdin = add3 <$> getLine <*> getLine <*> getLine

-- Сравните с этим:
add3FromStdin_ugly = do
  x <- getLine
  y <- getLine
  z <- getLine
  return (add3 x y z)

Вообще, <X> - это часто то же самое, что X, но с эффектами (либо просто что-то с эффектами). Можно ещё встретить <||> и <&&>.

.|. и .&. - это сишные | и &.

<?> в парсер-комбинаторах помечают термы, чтобы сообщение об ошибке было понятным:

hexDigit = digit <|> oneOf ['a' .. 'f'] <?> "hex digit"

<|> - это почти mplus. Видимо, напоминает || (или).

anonymous
()
Ответ на: комментарий от Smacker

Хоть и не складно, но самое страшное - это INTERCAL on Nuclear Reactor =)

anonymous
()

> To deal with high demand, the server is being restarted once a minute.

ENTERPRISE QUALITY

anonymous
()
Ответ на: комментарий от r

> Что меня бесит в популярном стиле написания на хаскелле - так это тысячи новых операторов типа

Хаскеллеры пишут так для удобства, например операции для работы над векторами лучше написать как <+>, <*> етц, чем `plus`, `mult`. Короче код, понятнее, какого типа операции. Можно было бы перегрузить +, *, но кто знает, ху а val1 + val2, какой у них тип? А так самодокументация кода, хоть операции при этом придется знать.

anonymous
()
Ответ на: комментарий от anonymous

> кто знает, ху а val1 + val2, какой у них тип?

Вы так говорите будто в хаскелле динамическая типизация как в каком-нибудь лиспе.

anonymous
()
Ответ на: комментарий от anonymous

>как в каком-нибудь лиспе.

Фи, уважаемый, не упоминайте в этом треде этот недофункциональный язык.

anonymous
()
Ответ на: комментарий от anonymous

> Можно было бы перегрузить +, *, но кто знает, ху а val1 + val2, какой у них тип?

Просто посмотреть на сигнатуру типа.

Вообще-то, у Хаскелла числовая башня - это (относительно) больное место. Уже говорили, что в контексте Num Show нахрен не нужен, да и вообще некоторые методы можно было разнести по разным классам. Тогда как раз можно было бы использовать эти же операции для весторов и матриц. Ещё хуже в Bits: когда делаешь биндинги к сишным библиотекам (и не только), очень хочется использовать .|. и .&., чтобы как в C, но безопасно. Или те же битовые поля. Конечно, можно просто сказать что-то вроде signum = error «do not use this method!», но это плохо.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.