0

私の大学の関数型プログラミング科目の最終試験で、 topsという関数を使用したコード リストの問題がありました。

公式の教科書、hoogleprelude indexいまいましいインターネットでその機能について何も見つけることができず 私のハグ インタープリターはそれを認識していないようです (WinHugs 98, v. september 2006)。どちらかを有効にします。

私はそれが非常に古いバージョンからのある種の廃止された機能だと推測しています。この tops 関数が何であるか、または実際に存在する場合でも、誰でもよく知っていますか?

アップデート:

試験のコピーを見つけました。これは質問です:

  1. 関数 whatdoido は何を計算しますか?
whatdoido [] = [[]]
whatdoido (x:xs) = concat [[x:t] | t <- tops xs]
4

2 に答える 2

4

何が起こったのかを探し回っている間に、何を推測できるか見てみましょうtops

whatdoido [] = [[]]
whatdoido (x:xs) = concat [[x:t] | t <- tops xs]

そうであると仮定すると、(x:xs)::[a]おそらくポリモーフィック/モノモーフィック/クラス制限型についてもそうです。[x:t]::[[a]]concat [[x:t] | t <- tops xs] :: [[a]]tops xs :: [[a]]tops :: [a] -> [[a]]a

明らかに、関数whatdoidoは入力の末尾を取得し、それに対して実行topsされ、 によって返される各リストの前に入力の先頭をポップしtopsます。

tops特に、 は の単なるタイプミスであることが示唆されておりwhatdoido、その場合、基本方程式は を意味しwhatdoido xs = [xs]ます。

別の提案は、 fromtopsのタイプミスです。if, so は驚くほどよく綴られたタイプミスですが、その場合は のような動作になります。tailsData.Listwhatdoido "Hi!" = ["Hi!", "H!", "H"]

于 2013-02-08T21:01:32.967 に答える
1

hoogle に加えて、別の検索場所としてhayooがあります。topsそこにも関数が見つからないので、先生が別の場所で定義した関数だったのではないかと思います。ただし、hayoo と hoogle は Hackage DB のすべてのパッケージをインデックス化するわけではないため、Hackage 上のモジュールで定義されている可能性があります。

于 2013-02-08T17:35:33.123 に答える