↑↑↓↓←→←→ⒷⒶ Войти !bnw Сегодня Клубы
УНЯНЯ. У нас есть немножечко инфы об этом пользователе. Мы знаем, что он понаписал, порекомендовал и даже и то и другое сразу. А ещё у нас есть RSS.
Теги: Клубы:

xor = (/=) :: Bool -> Bool -> Bool

Хаскель тут при том, что я про него гуглил, когда это узнал.

#T1O0KB (1) / @minoru / 3040 дней назад

Сегодня ночью ожидается двухгодичный даунтайм на переписывание бнвачика на Хаскель с целью перехода на identicon.

Нет, правда, поглядите, красивые пикчи же: https://mrkkrp.github.io/img/identicon-07.png https://mrkkrp.github.io/img/identicon-08.png https://mrkkrp.github.io/img/identicon-09.png https://mrkkrp.github.io/img/identicon-10.png https://mrkkrp.github.io/img/identicon-11.png https://mrkkrp.github.io/img/identicon-12.png

Пост про это дело в блоге автора.

#3XJLE0 (12) / @minoru / 3111 дней назад

ngx-export — nginx module for sourcing and running haskell code in config files.

#DCIPSO (0+2) / @minoru / 3127 дней назад

Вы всё ещё не слушаете http://bananasandlenses.net/ ? Вот лалки. // Серьёзно, отличный подкаст, рекомендую.

#FTHQX9 (23) / @minoru / 3174 дня назад

Пишу опердень на attoparsec. Т.к. парсер у нас одновременно и лексер, и собственно парсер, логику приходится перемежать обработкой пробельных символов:

pVarDecl :: Parser VariableDeclaration
pVarDecl = do
  string "var"
  skipWhitespace1 -- пропускаем 1 или больше пробельных символов
  name <- pVarName
  skipWhitespace -- пропускаем 0 или больше пробельных символов
  value <- optional $ do
    string "="
    skipWhitespace
    pExpression
  skipWhitespace
  string ";"

  return $ VariableDeclaration name value

Это утомляет. Появляется закономерное желание «переопределить точку с запятой» и явно указывать только места, где пробельные символы обязательны:

pVarDecl :: Parser VariableDeclaration
pVarDecl = do
  string "var"
  requiredWhitespace
  name <- pVarName
  value <- optional $ do
    string "="
    pExpression
  string ";"

  return $ VariableDeclaration name value

(и потом ещё для полного счастья keyword k = string k >> requiredWhitespace, да).

Удивительно, но сам attoparsec, похоже, ничего для этого не предлагает. Итак, какие у меня варианты?

Можно определить свою монаду. Это, конечно, круто, но придётся лифтить часть Data.Attoparsec. В принципе, это всё же лучше, чем ещё двести раз набрать «skipWhitespace», но все равно грязновато.

Есть ощущение, что можно обернуть парсер в трансформер, для которого определить инстанс Monad, и будет мне счастье. Но я трансформерами никогда не пользовался даже, не говоря уж о написании собственных; возможно, это бред, а не идея.

Есть у вас какие-то соображения на этот счёт?

#ENLYJ7 (42+2) / @minoru / 3213 дней назад
Prelude> show 3
"3"
Prelude> show 3.1
"3.1"
Prelude> show 3.14
"3.14"
Prelude> show 3.141592654
"3.141592654"
Prelude> 

Хаскель волшебный. Нужно будет посмотреть-таки лекцию, чтобы понять, как он это делает.

#CSNYPF (39) / @minoru / 3340 дней назад

Появился гайд по перекатыванию с cabal-install на stack. Всем апгрейд, посоны!

#8G6E9R (5) / @minoru / 3430 дней назад
Внезапно осознал, что могу имплементировать quicksort только на Haskell.
#WFNJA0 (13) / @minoru / 3567 дней назад
Что-то не пойму, троллит он или всерьёз: http://eax.me/kolkhoz-doctrine/ Но термин «Kolhoz Driven Development» на вооружение возьму однозначно.
#WFWVFY (7) / @minoru / 3574 дня назад
let f (%) x y = x % y
in  f (*) 1 2

…десугарится в:

(\(%) x y -> x % y) (*) 1 2

…и, наконец, в:

1 * 2

Это ж как можно кому-то (будущему себе, к примеру) мозг сломать…

#FEH7HN (13) / @minoru / 3609 дней назад
http://habrahabr.ru/post/225393/ Неплохо запилили, жаль, что *ненужно.
#4PZNSK (5) / @minoru / 3715 дней назад

https://hackage.haskell.org/package/acme-lookofdisapproval-0.1/docs/Acme-LookOfDisapproval.html

Типа, джва года ждал эту фичу и всё такое. Вот теперь-то хипсторы точно перейдут на Haskell!

#DH01ZM (1) / @minoru / 3757 дней назад

СЯУ про опцию install --allow-newer, заставляющую cabal игнорировать верхние границы версий пакетов.

#5U135L (3) / @minoru / 3778 дней назад

Испытал экстаз от того, как красиво и элегантно в persistent пишется функция, которая инсертит запись в таблицу, если там такой ещё нет, и возвращает id записи (либо новой, либо найденной):

insertLanguage language = do
    let lang = Language language
    entity <- getByValue lang
    case entity of
        Nothing  ->  do insert lang
        Just e   ->  return $ entityKey e

Пять строк, пять строк! И не какого-то там мозговыносящего матана с функторами, а нечто такое, что питонист, взглянувший на это, просто подумает: «о, в третий питон ещё и стрелочки какие-то впилили, прикольно».

Тот факт, что insert возвращает id созданной записи, ранее было поводом отдельного экстаза.

#A13SMB (48) / @minoru / 3823 дня назад

У Ромы Чепляки неизменно отличные презентации: http://ro-che.info/docs/2013-11-14-haskell-and-oop.html

#27PRF8 (8) / @minoru / 3860 дней назад

Победил HXT, вынув из XML'ек условия задач для рассчётки. Всё ещё не понимаю, как может стрелка иметь тип ArrowXml a => a XmlTree XmlTree и при этом возвращать не одно значние, а несколько. Не понимаю, как это всё разветвляется и сливается обратно без необходимости делать map и concat. Аргх.

--Minoru, который думал, что он понял стрелки

#N9BR4J (4+1) / @minoru / 4040 дней назад

А поясните мне за песочницы: разве они не должны наследовать пакеты, установленные в системе и у пользователя?

Я почему спрашиваю: pandoc-1.9.4.5 не собирается в sandbox (похоже, там кто-то захардкодил пути и sh не может найти какой-то файл), так что я поставил его под юзером (то есть в ~/.cabal). Но после того, как я делаю cabal sandbox init, cabal list pandoc утверждает, что установленных версий pandoc нет. Я что-то делаю не так, или я чего-то не так понял?

#LJI5CA (0) / @minoru / 4098 дней назад

ghc doesn't fuse lists (avoiding success at all costs?)

http://stackoverflow.com/a/17345377/2350060

#4XPJQ8 (0) / @minoru / 4167 дней назад

@qnikst на Juick предлагает коллективно разобрать книгу «Purely Functional Data Structures» Окасаки. Присоединяйтесь! http://juick.com/2339137

#6NLVOG (1) / @minoru / 4231 день назад
haskell,? А где почитать инстансы тайпклассов? Вот в документации к Monad пишут, что есть инстанс для Either e, а в коде его не видно. :info в ghci тоже не помогло — говорит, что инстанс есть (если испортировать Control.Monad.Instances), но сами определения не показывает. Как быть?
#S3PH8B (3) / @minoru / 4426 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.