УМННБJ, ЯХВ. Войти !bnw Сегодня Клубы
Потерял анальную девственность с Template Haskell. Код у всех такой уёбищный → http://ompldr.org/vaGsxNA/s.png ← или я один лошара? Алсо, поделитесь секретами бытия, как в хачкиле не уходить за овер 100 символов в строку.
#D8FFBZ / @plhk / 4070 дней назад

Больше кода в квотейшенах пиши, будет понятнее. А вообще да, оно убогое нечитабельное говно по большей части. Что поделать, других инструментов нет. >как в хачкиле не уходить за овер 100 символов в строку Настоятельно рекомендую всегда использовать этот стайл гайд: https://github.com/tibbe/haskell-style-g.....l-style.md Он очень правильный. Особенно это касается _всегда_ явных импортов, _всегда_ -Wall, _всегда_ типы у top-level (впрочем, об этом тебе Wall напомнит). Стилистические соглашения не так важны на фоне этого. Олсо, поделись .vimrc, тоже хочу такой модный статуслайн.
#D8FFBZ/DXV / @anonymous / 4070 дней назад
@kagami https://github.com/Lokaltog/vim-powerline скачать бесплатно без регистрации смс
#D8FFBZ/LYN / @plhk --> #D8FFBZ/DXV / 4070 дней назад
Так точно! У всех уебищный!
#D8FFBZ/22C / @ap / 4070 дней назад
@kagami >Настоятельно рекомендую всегда использовать этот стайл гайд: https://github.com/tibbe/haskell-style-g.....l-style.md >Maximum line length is 80 characters. ._.
#D8FFBZ/BQX / @plhk --> #D8FFBZ/DXV / 4070 дней назад
@plhk Это в любом языке же.
#D8FFBZ/J6R / @anonymous --> #D8FFBZ/BQX / 4070 дней назад
@kagami в языках без (.) и ($) ваще не парит. хотя я в бидоне умудрялся говнять трехстрочные фильтромапоредусы свинья везде грязь найдет
#D8FFBZ/MW9 / @plhk --> #D8FFBZ/J6R / 4070 дней назад
@ap Если большая часть в квотейшене, а не хуярится синтаксическими операторами, то в принципе понятно, что оно генерирует. Вот, например:

{-# LANGUAGE TemplateHaskell, FlexibleInstances #-}

module TH2 where

import Data.List (intercalate)
import Language.Haskell.TH
import Language.Haskell.TH.Syntax (VarStrictType)

deriveShow :: Name -> DecsQ
deriveShow name = do
    info <- reify name
    case info of
        TyConI (DataD _ _ _ [RecC _ fields] _) ->
            [d| instance Show $(conT name) where
                    show rec = $(showRec fields)
            |]
        _ ->
            error "Not implemented"
  where
    showRec :: [VarStrictType] -> ExpQ
    showRec fields =
        let rec = show name ++ ":\n\t"
        in [| rec ++ intercalate "\n\t" $(listE $ map showField fields) |]

    showField :: VarStrictType -> ExpQ
    showField (fieldName, _, _) =
        let recName = mkName "rec"
            field = show fieldName ++ ": "
        in [| field ++ show $(appE (varE fieldName) (varE recName)) |]
#D8FFBZ/48Q / @anonymous --> #D8FFBZ/22C / 4070 дней назад
Поясните хотя бы как вот это починить? [ValD _ body dec] <- [d|parse = $(global 'fmap) $(conE name) $(parserE consName)|] return $ ValD (VarP parserName) body dec
#D8FFBZ/FCV / @plhk / 4070 дней назад
@plhk Гайд уровня "чтобы сохранить кожу нежной и шелковистой не обмазывайте её говном.".
#D8FFBZ/4JV / @ap --> #D8FFBZ/BQX / 4070 дней назад
@plhk Во всех стайл-гайдах, что я видел, говорили использовать 80 символов максимально в длину. Просто обычно это универсальное правило. Если код длиннее, то скорее всего ты что-то делаешь не так. Обычно это 50-60 на самом деле, к 80 редко должен подбираться, т.к. большая вложенность тоже плохо читается.
#D8FFBZ/6J6 / @anonymous --> #D8FFBZ/MW9 / 4070 дней назад
@kagami родина им дала широкоэкранные мониторы - используй всю площадь экрана используй, блядь! не хочу, хочу жрать говно и это программисты блядь?
#D8FFBZ/DR0 / @plhk --> #D8FFBZ/6J6 / 4070 дней назад
@kagami Но ведь на хаскеле код чаще растет в ширину, а не в длину. Поэтому можно легко уползти за 200 символов сильно не напрягаясь. Алсо у меня в имаксике залезший за 80 символов код просто ненавязчиво меняет цвет. И не мешает когда пишешь, и сразу видно чо куда когда форматируешь.
#D8FFBZ/YBR / @ap --> #D8FFBZ/6J6 / 4070 дней назад
@plhk Зачем ты генерируешь функцию, достаёшь из неё уже написанные тобой куски и создаёшь новую? Используй просто квотейшен.
#D8FFBZ/MM8 / @anonymous --> #D8FFBZ/FCV / 4070 дней назад
@kagami Да, так няшно.
#D8FFBZ/MSM / @ap --> #D8FFBZ/48Q / 4070 дней назад
@plhk Совсем тупой что ли? Большой монитор чтобы открыть много терминалов по 80 символов. У меня помещается 2 + один маленький с watch-скриптами/дебаг-серверами в консоли.
#D8FFBZ/8FO / @anonymous --> #D8FFBZ/DR0 / 4070 дней назад
@kagami Затем что ниасилил, лол если написать [ValD _ body dec] <- [d|$(varP хуйпизда) = $(global 'fmap) $(conE name) $(parserE consName)|] парсинг фейлед
#D8FFBZ/3U8 / @plhk --> #D8FFBZ/MM8 / 4070 дней назад
@ap Не надо уползать. Есть where и под-функции.
#D8FFBZ/JZM / @anonymous --> #D8FFBZ/YBR / 4070 дней назад
@plhk или предлагается ебошить ValD (VarP хуйпизда) [|говно|] моча?
#D8FFBZ/3D5 / @plhk --> #D8FFBZ/3U8 / 4070 дней назад
@kagami вере тоже уползают, алё а кейсы вообще куку досвидос
#D8FFBZ/62X / @plhk --> #D8FFBZ/JZM / 4070 дней назад
@plhk [d| $(varP parserName) = $(body) $(rec) |] возвращай. И в последней строчке квотейшеном пиши.
#D8FFBZ/E0M / @anonymous --> #D8FFBZ/3D5 / 4070 дней назад
@plhk You are doing it wrong. Стайл-гайд прочитал?
#D8FFBZ/I41 / @anonymous --> #D8FFBZ/62X / 4070 дней назад
@kagami >Parse error in pattern: $(varP parserName)
#D8FFBZ/ZG1 / @plhk --> #D8FFBZ/E0M / 4070 дней назад
@kagami Точнее $(varE parserName). Ну там надо рефакторить, короче, мне лень. Суть в том, чтобы писать код так, чтобы было похоже на то, что оно вернёт.
#D8FFBZ/KL4 / @anonymous --> #D8FFBZ/E0M / 4070 дней назад
@kagami один хуй, если там что-то кроме константы до = парсе егог во все поля идёт
#D8FFBZ/GLU / @plhk --> #D8FFBZ/KL4 / 4070 дней назад
@plhk ну вас в пизду, пойду в #haskell спрошу
#D8FFBZ/UML / @plhk --> #D8FFBZ/GLU / 4070 дней назад
@plhk Хм, походу мы так не можем, чтобы кастомное имя функции надо clause или подобное. Странно.
#D8FFBZ/VVT / @anonymous --> #D8FFBZ/GLU / 4070 дней назад
@kagami былинный отсос хачкиблядей!
#D8FFBZ/PAT / @plhk --> #D8FFBZ/VVT / 4070 дней назад
@plhk http://stackoverflow.com/questions/57225.....36#5733936 >Looks like it's a bug with versions of GHC older than 6.12 where you can't splice in types. Лол.
#D8FFBZ/5RL / @anonymous --> #D8FFBZ/PAT / 4070 дней назад
@kagami >in types
#D8FFBZ/GK4 / @plhk --> #D8FFBZ/5RL / 4070 дней назад
@plhk Хуй знает. Я вроде на это уже натыкался — так и не осилил сделать кастомное имя функци в квотейшене, забил и сделал через clause.
#D8FFBZ/4TO / @anonymous --> #D8FFBZ/GK4 / 4070 дней назад
@kagami Олсо, хэкэдж опять лежит.
#D8FFBZ/P05 / @anonymous --> #D8FFBZ/4TO / 4070 дней назад
Олсо, тебе кастомное имя функции на самом деле нахер не сдалось. Можешь писать тупо в квотейшене, он сам их гигиеничными сделает: Prelude Language.Haskell.TH> runQ [d| test = 123 + 456 |] [ValD (VarP test_3) (NormalB (InfixE (Just (LitE (IntegerL 123))) (VarE GHC.Num.+) (Just (LitE (IntegerL 456))))) []]
#D8FFBZ/1E3 / @anonymous / 4070 дней назад
@kagami сейчас да, я сначала все мелкие парсеры вытаскивал в паблик
#D8FFBZ/ZD8 / @plhk --> #D8FFBZ/1E3 / 4070 дней назад
@plhk У меня не открывается ._.
#D8FFBZ/5BP / @anonymous --> #D8FFBZ/B0H / 4070 дней назад
@kagami мизулина запретила
#D8FFBZ/YIN / @plhk --> #D8FFBZ/5BP / 4070 дней назад
@plhk Все правильно сделали. Давно пора приравнять к героину.
#D8FFBZ/NZB / @ap --> #D8FFBZ/YIN / 4070 дней назад
@plhk Хаскель-то за что? Олсо, похоже это оно и есть, да. До знака равно же ещё паттерн может быть.
#D8FFBZ/EXU / @anonymous --> #D8FFBZ/YIN / 4070 дней назад
@kagami 'P' в varP кагбе намекает
#D8FFBZ/ZCD / @plhk --> #D8FFBZ/EXU / 4070 дней назад
@plhk А у тебя vim-powerline или новый powerline? Там чо-то пишут, что deprecated, не модно уже.
#D8FFBZ/X25 / @anonymous --> #D8FFBZ/LYN / 4070 дней назад
@kagami у меня старый
#D8FFBZ/D70 / @plhk --> #D8FFBZ/X25 / 4070 дней назад
какое-то копошение в говне итт. зачем в хаскеле шаблоны, там же кококо фвп тайпкласы
#D8FFBZ/ES4 / @ninesigns / 4070 дней назад
@4da Што.
#D8FFBZ/K1I / @anonymous --> #D8FFBZ/ES4 / 4070 дней назад
@4da Как тайпклассы помогут построить парсер для sum type?
#D8FFBZ/ZW1 / @plhk --> #D8FFBZ/ES4 / 4070 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

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