quarter
@quarter has joined the channel
anythingToString :: forall a. a -> String
Data.Convertible.Convertible
クラス、別パッケージに分離してほしいなReaderT
より ImplicitParams
使えよって記事と ImplicitParams
使うと危ないって記事が両方載ってるっぽくて興味深いですね :smirk:ImplicitParams
使うと危ないぞ」という記事 https://chrisdone.com/posts/whats-wrong-with-implicitparams/?param
ReaderT
でいうところの param <- ask
をさしているのかそれともよそで ask
した結果の param
を参照しているのか、型推論した結果からしか分からないところにあるみたいですね。listDirectory
関数が返すリストの順番に依存したコードを書くと、ある日突然何の脈絡もなく順番が変わってしまってバグり出す、という恐怖体験が続きました... :fearful:let ... in
って面倒くさいなぁという気持ちになり、これまでの鬱憤もあってこんな乱暴なことをいってしまった :cold_sweat: んですが、 https://twitter.com/igrep/status/1381803450321661953let ... in
を使いますか?do
の let
で実は実現できるけど、やっぱり違和感ありますかね... :disappointed:aes128gcmEncrypt :: Key -> (Nonce -> PlainText -> AddDat -> [CipherText]) aes128gcmEncrypt (Key key) = let aes = throwCryptoError (cipherInit key) :: AES128 in \(Nonce nonce) plaintext (AddDat ad) -> let aead = throwCryptoError $ aeadInit AEAD_GCM aes nonce (AuthTag tag0, ciphertext) = aeadSimpleEncrypt aead ad plaintext 16 tag = Byte.convert tag0 in [ciphertext,tag]
let
と in
の行頭をそろえちゃいけないと思っていたんですが(本件の元となった質問 https://teratail.com/questions/332942?rss でも質問者が間違えてそろえてしまってハマっています)、そろえていい場合もあるんですね... :cold_sweat: (むしろそろえるのが普通なのか)do
の中で let .. in
を使うのが鬼門なのか...let foo = bar in ...
let foo = bar in foo + 1
try
が非同期例外を捕捉しなくて悩んでいたんだけど、非同期例外が連続して2回飛んでた。。。evacuate1 (p=p@entry=0x42005d49a8) at rts/sm/Evac.c:839 839 rts/sm/Evac.c: No such file or directory.