あるいは、
というインスタンスなら汎用性があるのでそれをPRしてあげるか。
instance MonadFail m => AWST' env m where fail = ...
というインスタンスなら汎用性があるのでそれをPRしてあげるか。
instance MonadFail m => AWST' env m where fail = ...
streaming
の方はサードパーティーか... じゃあおかしいのはfail
が絶対に必要な展開ではないんだよなぁ... https://hackage.haskell.org/package/amazonka-s3-streaming-1.1.0.0/docs/src/Network.AWS.S3.StreamingUpload.html#concurrentUploadMonadFail
を MonadThrow
に変えるか、 SomeException
で fail
で投げるはずの例外を包んであげればいいかな、と思いましたが、そもそも、すでに m
は MonadUnliftIO m
( MonadIO
のサブクラス)が実装済みなワケですから liftIO fail
にすればそこで賄えるかと(多分作者の気持ちはそっちの方が近いし)MonadThrow
に変える方法に抵抗がある理由が「例外作らなきゃいけない」でしたら throwString
の使用をご検討ください。MonadFail
のままにしているのか気になります。> groupBy (\_ x -> x /= -1) [1,2,-1,3,4,-1,5,6] [[1,2],[-1,3,4],[-1,5,6]]
Element ByteString = Word8
なので、空行 (`"\n\n"`)とか指定できないですね。。。group :: Monad m => (a -> Bool) -> ConduitT a [a] m () group f = loop id where loop rest = do mx <- await case mx of Nothing -> case rest [] of [] -> return () l -> yield l Just x | f x -> yield (rest []) >> loop id | otherwise -> loop (rest . (x:))
splitOn
が提供されない問題ですね!stack build pretty-simiple
(あるいは cabal install --lib pretty-simple
)してくれ」と書くか、stack.yaml
か cabal.project
には有効にするよう記載する、ってところですかね。() => a -> Hoge
って関数がいきなり Num a => a -> Hoge
とかに変わったら同じコードから呼び出せなくなりませんか?data AnyBot = forall b. Bot b => AnyBot b instance Bot AnyBot where type Dep AnyBot a = () name (AnyBot b) = name b reply (AnyBot b) msg = reply b msg
Could not deduce: Dep b env arising from a use of 'reply'
n
までの総和を求める関数を作りたいです。f n = sum [0..n]
と書けばしまいですが、こうすると n
が大きく(9桁とか)なったときにかなり時間がかかってしまいます。(回避策はあるのでしょうか)div
関数があるので、余りが出ないことを確信しているなら使えます