最近、私は Haskell、特にファンクタの概念全体をいじっています。飛び込むほど、a-haの瞬間が増え、ドーパミン受容体がかなりくすぐられます.
私が立ち往生している問題は次のとおりです。機能するコードは次のとおりです。関数を持ち上げて、最初に IO 値に適用し、次にリストに適用します。
replicator1 =
fmap (replicate 3)
replicator2 =
fmap (replicate 3)
main = do
replicated <- replicator1 getLine
print (replicator2 replicated)
より簡潔な方法でそれを書くことは非常に魅力的です。つまり:
replicator =
fmap (replicate 3)
main = do
replicated <- replicator getLine
print (replicator replicated)
私の一部は、IO と List インスタンスの両方に適用できるはずなので、概念的に正しいと言っていreplicator
ますが、強く型付けされた言語である Haskell ではそうすることができません。なぜこのようなことが起きているのか、おおむね理解できたと思います。
問題は、後者のバリアントに近づく方法はありますか? それとも前者と同居していいの?
ありがとうございました!