私はこのようなことをする方法を見つけようとしています:
(head, last) `someFunction` [1, 2, 3]
タプル(1, 3)
を出力として生成します。
理論的にはアプリケーションファンクターに似ているように見えますが、少し逆になっています。これを行う(または何らかの方法で作成する)同様の関数があると思いますが、それを見つけられない/理解できないようです。
私はこのような関数を定義しようとしました:
fmap' :: ((a -> b), (a -> b)) -> [a] -> (b, b)
fmap' (f1, f2) xs = (f1 xs, f2 xs)
しかし、GHCは実際にはこれをコンパイルしません。
どんな助けでも素晴らしいでしょう。ありがとう!
編集(1年後!):
型アノテーションfmap'
が間違っていたため、コンパイルできませんでした。明らかに、私がやっていたことを行うためのより良い方法がありますが、fmap'
代わりに私のタイプは次のようになります。
fmap' :: ((a -> b), (a -> b)) -> a -> (b, b)
その場合、コンパイルして正常に実行されます。