私は中級者ですが、haskell の初心者に過ぎません。これが私の問題です:
連想二項演算があるとします(>>=)
。p
そのような多変量関数はありp (>>=) h g f e = h >>= g >>= f >>= e
ますか?
この質問は、二項演算が同じタイプの入力を受け取る場合に可能であると述べているため、この質問をしています。これは一般化できるのだろうか。
EDIT-1: http://okmij.org/ftp/Haskell/vararg-fn.lhs (可変型引数の可変数のセクション) のコードを変更しようとしていますが、ほとんど進展がありません。
EDIT-2: コードを少し単純化します。
{-# LANGUAGE FunctionalDependencies, FlexibleInstances #-}
module Main where
class Lfold f a b | b -> a where
lfold :: (a -> (f a) -> (f a)) -> (f a) -> a -> b
instance Lfold f a (f a) where
lfold op rid x = op x rid
instance Lfold f a b => Lfold f a (a -> b) where
lfold op rid x y = lfold op (op x rid) y
test :: [String]
test = lfold (:) [] "a" "b" "c"
main :: IO ()
main = putStrLn $ show test