@ has joined the channel
iteratee
について調べていたのですが、well-known types such as foldables, iteratees, lenses, etc.
enumerator
パッケージにおける実装などについて詳しく書いているのですが肝心の enumerator
が deprecated になっていました。accum
して、その結果を使ってストリームを最初から流し直す、みたいなプロセスってどう書けばよいのでしょうか?-- | -- >>> P.run pa [1 .. 3] -- [(1,6),(2,6),(3,6)] pa :: Monad m => P.ProcessT m (P.Event Int) (P.Event (Int, Int)) pa = proc x -> do sum' <- P.accum 0 -< (+) <$> x end <- P.onEnd -< x sum'' <- returnA -< sum' <$ end returnA -< (,) <$> x <*> sum'' -- Event a は Applicative でないのでここでエラー
(&&&)
で分岐して片方で accum すれば、必要なストリームは作れる。pa = P.switch collect combine where collect = proc x -> do lRev <- P.accum [] -< (:) <$> x sum' <- P.accum 0 -< (+) <$> x ed <- P.onEnd -< x P.muted &&& returnA -< (reverse lRev, sum') <$ ed combine (l, sum') = proc _ -> do x <- P.blockingSource l -< P.ZeroEvent returnA -< (, sum') <$> x
stack --local-build-path=<好きなパス> install
と実行すれば、 <好きなパス>
にビルドした実行ファイルが作成されます。blaze-html
を用いて以下のようなものを生成したいのですが、どうすればよいでしょうか<p>Hello <span>World</span></p>
$ stack --resolver nightly-2018-03-18 ghci --package blaze-html > import Text.Blaze.Html5 > import Text.Blaze.Html.Renderer.String > import Data.Semigroup > :set -XOverloadedStrings > let inner = "foo" <> Text.Blaze.Html5.span "bar" <> "baz" > let html = p inner > renderHtml html "<p>foo<span>bar</span>baz</p>"
Spec.hs
内に`foo :: [Int] -> Bool`という関数があった場合にはghci内でquickCheck foo
stack ghci --test
ではダメ?stack ghci test/Spec.hs
でいけました!stack ghci test/Spec
では実行できなかったので他に方法があるのかと勘違いしていました。{-# OPTIONS_HADDOCK hide, prune, ignore-exports #-}
IF PROD {-# OPTIONS_HADDOCK hide #-} END