という Haskell 関数を作りましたfunlist
。それが行うことは、開始値と関数のリストを取り、リスト内のすべての関数を開始値に適用することです。
funlist thing [function] = function thing
funlist thing (function:functions) = funlist (function thing) functions
funlist _ _ = error "need a list of functions"
この関数の問題は、型がfunlist :: t -> [t -> t] -> t
. その型は、ghc が開始値を完全に異なる型に変換しない関数のリストを許可する一方で (たとえば[sin,cos,tan]
許可される)、開始値を別の型に変換する関数 (たとえばshow
) がエラーを生成することを意味します。その関数は型シグネチャと一致しないためです。
これは、関数が機能する方法ではありません。開始値の型を変更する関数のリストを取得できる必要があります (例: [sin,show]
)。この関数は基本的に に変換funlist 5 [sin,cos,tan,isInfinite,show]
されshow $ isInfinite $ tan $ cos $ sin $ 5
、後者は機能しますが、前者は機能しません。
この機能を正しく動作させる方法はありますか?
編集:私は知っています.
と>>>
、これを機能させる方法があるかどうか疑問に思っています。