基本的には、headを使って最初の要素を乗算し、tailとnullでリストを反復処理することになっています。私はhaskellにはとても新しいので、私はフロー制御を全く理解していません。以下のコードはすでに動作しています。私はちょうどテールを使用してリストを繰り返し処理する必要があります。head、tail、nullを使ってリスト内の要素を生成する
module Blueprint where
import Prelude
x=1
prod :: [Integer] -> Integer
prod n
|null n == True = 0
|null n== False = x*head n
いくつかの擬似コードを追加:
x=1
prod :: [Integer] -> Integer
prod n
|null n == True = 0
|null n== False = x*head n do tail n repeat until null n == true
すべてのヘルプは素晴らしいことです。ありがとう。
パターンマッチングがより安全で簡単な場合に部分的な機能を使用してこのようなタスクを実行するための指導は、犯罪行為とみなされます。 ; -P – chi
そうですね、私の教授はそうでないと思っています:D – HoRnsUp
私は実際にこの種の運動をする教授を理解することができます:彼らはあなたが頭、尾などを理解しているかどうかを確かめたいと思います。それでも、もし私がハスケルを教えなければならないなら、パターンマッチングがよく理解されているかどうかを確認するために、それらを言及しません。私も警備員を延期するつもりです:最近、警備員は多くの虐待を見てきました。ガード 'null n == True'と' == False'の上にさえも避けるべきです。 ( 'x == True'は' x'と等価で、最後の場合は 'otherwise'を使用します - もちろん、パターンマッチングではガードはありません...) – chi