koyama41
実のところ、 ghc に関しては ghci を起動しちゃえばわかるじゃん、という回秘策を使っていたので、真面目に調べていなかったのです… 今回 haddock のバージョンを知りたくなってハマった、というのが正直なところです :sweat_smile:
fdToHandle
するなら createPipeFd
ではなく createPipe
を使った方がよいのではないかと。Tree
とは別のやり方を試してみました。また、おかしな所があればご指摘いただけると嬉しいです。sortBy row b
がダブってますね。。。sortOn :: Ord b => (a -> b) -> [a] -> [a]
loop
を State -> Maybe State
ではなくて getStates
とおなじ State -> [State]
にすると、場合分けが null empties = [(filled, [])]
か otherwise = concatMap loop $ getState states
だけで済む(たぶん)ので簡単になりそうですfilled = filter ((/= 0) . num) board empties = filter ((== 0) . num) board
partition
を使って(filled, empties) = partition ((/= 0) . num) board
partition
の型は (a -> Bool) -> [a] -> ([a], [a])
と類推でき, ghci でこの型や sortBy
の型を検索すると以下のようになります.classify = flip div 3
classify = (`div` 3)
null empties = [state]
としてしまえば filled のほうの名前も要らなくなりそうですねloop state@(_,[]) = [state]
と loop state = concatMap loop $ getStates state
にしたほうがすっきりするかもstack path --dist-dir
で出来るやつですcabal-doctest
を使うのが解決方法のようです。IO
に関して言えば大半がそれに該当しそうな気がしますが... (例外を投げるとかスレッドを作るとか?cabal-plan list-bins
が使えます。 http://hackage.haskell.org/package/cabal-plan