他の機能の使用が許可されていない場合は、あなたのやり方で問題ありません。
あなたができる
min' [] = error "empty list"
min' (x:xs) = minhelper x xs where
minhelper m [] = m
minhelper m (y:ys) | y < m = minhelper y ys
| otherwise = minhelper m ys
しかし、一般的な用途では、あなたのものよりも優れているとは思いません。m
再帰呼び出し全体で最小値を追跡します。
minhelper の 2 番目のケースを次のように書き直すことができます。
minhelper m (y:ys) = minhelper (if y<m then y else m) ys
Haskell では、if-then-else が命令ではなく式に作用するという事実を利用しています。
mymin :: Ord a => [a] -> a
Ord a =>
mymin 関数は、a
不等式が(<=)
定義されている型に対して機能することを意味します。(ここで定義されています。) 同様に、同等性が定義されているEq a =>
型に対して機能することを意味する場合。a
(==)
[a] -> a
a
s のリストを取り、あなたにa
返すことを意味します。