私は現在HaskellでCSクラスを受講していますが、いくつかの資料を理解する上で深刻な問題を抱えています。
私の割り当ての1つとして、2つのデータ型が与えられ、定数時間の追加を持つ追加関数を作成するように求められました。
私は与えられます:
data NNList a = Sing a | Append ( NNList a) ( NNList a) deriving (Eq)
data CList a = Nil | NotNil ( NNList a) deriving (Eq)
そして私は関数を書くように頼まれました:
CListAppend :: CList a -> CList a -> CList a
CS教育で何を逃したのかはわかりませんが、時間と空間の複雑さに戸惑うことがよくあります。関数が関数であるconstant time
かどうかを実際に知るにはどうすればよいでしょうか。そして、誰かがこの質問をどのように進めるかについてのアイデアを私に提供できますか?
私の試み:
CListAppend :: CList a -> CList a -> CList a
CListAppend Nil rl = rl
CListAppend ll Nil = ll
CListAppend ll rl = NotNil $ Append ll rl
これは、CListの代わりにNNListを返すエラーを報告します。それを変換する方法はありますか?