cblp on gh-pages
Update 2017-04-06-react-flux-gu… (compare)
cblp on react-flux-talk-timecode-fix
cblp on master
Update 2017-04-06-react-flux-gu… (compare)
astynax on react-flux-talk-timecode-fix
Update 2017-04-06-react-flux-gu… (compare)
cblp on master
Revert @ruhaskell (compare)
cblp on master
Add @ruhaskell (compare)
cblp on gh-pages
Update link (#109) https://has… (compare)
cblp on qnikst-patch-1
cblp on master
Update link (#109) https://has… (compare)
qnikst on qnikst-patch-1
Update link https://haskell-la… (compare)
Отцы, тут вот статья про singletons для самых маленьких: https://blog.jle.im/entry/introduction-to-singletons-1.html
Там running example вида
data DoorState = Opened | Closed | Locked
deriving (Show, Eq)
data Door (s :: DoorState) = UnsafeMkDoor { doorMaterial :: String }
и они реализуют
lockDoor :: Door 'Closed -> Door 'Locked
openDoor :: Door 'Closed -> Door 'Opened
А можно ли состояние двери как-то в монаде State хранить, чтобы lockDoor
стал вида State (Door s) a
? Ведь тогда получается тип стейта меняться будет?
Отцы, возвращаясь к этим синглтонам из https://blog.jle.im/entry/introduction-to-singletons-1.html
Понять я все понял, но не представляю как бы я сам это в жизни применил. Могу только по полной аналогии статье:
PhantomType a -> PhantomType b
?А помимо этого?
Всем привет не могу понять почему стандартный list fold пытается взять тип [[char]] и не использует тип [text]
abbreviate :: Text -> Text
abbreviate xs = T.toUpper text
where text = foldl (\acc x -> T.snoc acc (head x)) T.empty res
text :: Text
res = T.split (\x -> x == ' ' || x == '-') xs
res :: [Text]
выдает ошибку
• Couldn't match type ‘Text’ with ‘[Char]’
Expected type: [[Char]]
Actual type: [Text]
• In the third argument of ‘foldl’, namely ‘res’
In the expression:
foldl (\ acc x -> T.snoc acc (head x)) T.empty res
In an equation for ‘text’:
text = foldl (\ acc x -> T.snoc acc (head x)) T.empty res
|
8 | where text = foldl (\acc x -> T.snoc acc (head x)) T.empty res
Text.uncons
.x
и .y
модуля, перечисленных в кабалфайле
Сначала я его распарсил в DotGraph a
из http://hackage.haskell.org/package/graphviz-2999.20.0.3/docs/Data-GraphViz-Types-Graph.html
Распарсить таким образом, чтобы в a
был лейбл я не смог, поэтому пришлось написать функцию, которая проходит по всему графу и матчит ноду с нужными атрибутами. У найденной ноды дернул successors
, а это оказались только непосредственные последователи. Т.е. тут тоже чет рекурсивное надо было изобретать, поэтому я забил.
Потом через fgl
пробовал, но там оказалось что при восстановлении назад из fgl
в дот он какую-то информацию теряет. Не помню уже что именно. Я расстроился и пошел пить.
s
только строятся задумки (s + 1), но никогда не вычисляются