← All posts tagged Haskell

Elemir
мысли lor_ppl juick_ppl Haskell Меня просто вымораживает ситуация вокруг haskell.
С одной стороны барьера сидят "хаскелисты", осилившие только скрипты писать да конфиг xmonad настроить, фанатично приравнивающие haskell к ghc, не слышавшие о большинстве type экстешонов их любимого компилятора, не понимающие в чём проблемы с RankNTypes, почему и зачем в Clean были введены афинные типы, а в MLKit — регионы.
Но самое смешное, — их противники. Представьте себе любителя эзотерических язычков, орущего о том, что хаскель переусложнённый, а самое главное — о непопулярности оного. Забавно наблюдать подобные заявления от фанатика схемы или, например, Go. Но любое упоминание хаскеля у них вызывает какой-то нерациональный слепой приступ ярости и душевной боли.
Elemir
мысль Haskell Попытался активно поюзать экзистенциалы в коде. Понял почему @jtootf на их реализацию в haskell'е так ругался. Встаёт вопрос, — почему такой cs.uu.nl синтаксис до сих пор не всунули в ghc?
Elemir
Haskell programming xmonad Сегодня выдался довольно плодотворный день — в порыве настройки xmonad написал довольно убогий, но оригинальный eventHandlerHook и свой собственный layout.
Но давайте по-порядку. Когда просматриваешь картинки с помощью feh возникает следующая проблема — если окно изменяет размер (например при просмотре галлереи), то окно перемещается в (0,0), что очень неприятно. У этой проблемы есть решение — запускать feh для каждой картинки по-отдельности, но решение сверхресурсоёмко, к сожалению. Наверное был бы идеальным вариант в духе urxvtd, но на данный момент такого решения не существует, а патчить feh как-то не хочется. Я пошёл по другому пути — при запросе окна на изменения параметров смотреть не feh ли это, и если да, то размер изменять, но по прежнему центрировать. В итоге получился вот такой вот хук:
myHandleEventHook :: Event -> X All
myHandleEventHook e@(ConfigureRequestEvent {ev_window = w}) = withDisplay $ \dpy -> do
cname <- fmap resClass $ io $ getClassHint dpy w
ws <- gets windowset
wa <- io $ getWindowAttributes dpy w
bw <- asks (borderWidth . config)

let screenWidth = displayWidth dpy (defaultScreen dpy)
screenHeight = displayHeight dpy (defaultScreen dpy)

if (cname == "feh")
then do io $ configureWindow dpy w (ev_value_mask e) $ WindowChanges
{ wc_x = div (screenWidth — (ev_width e)) 2
, wc_y = div (screenHeight — (ev_height e)) 2
, wc_width = ev_width e
, wc_height = ev_height e
, wc_border_width = fromIntegral bw
, wc_sibling = ev_above e
, wc_stack_mode = ev_detail e }
when (member w ws) (float w)
io $ sync dpy False
(return (All False))
else (return (All True))
myHandleEventHook _ = return (All True)
Во-вторых я вспомнил о том, что давно хочу вертикальные табы для работы с браузером. Это наглядно, удобно и довольно экономно. Там есть что допилить (например прокрутку и древовидность), но оно и сейчас годно к употреблению: goo.gl и rghost.ru
Используется оно просто: vtabLayout = noBorders (vtabbed 200 LeftT myShrinkText myTheme)
P.S. Обещался ещё @L29Ah сделать горизонтальные мультитабы. Это сложнее, но, надеюсь, что руки дойдут
Elemir
language clean ? Haskell Я знаю, что меня читают несколько хаскеллистов. Чем этот язык лучше клина? На сколько я понимаю клин лучше концептуально, но у хаскелля несколько прикладных преимуществ таких как обширная библиотека и скорость работы ghc. Я прав?