私は、このようなconditonと混同Haskellでは再帰関数を学んでいる:ハスケル:特定の条件でタプルのリストで文字を返す再帰関数(比較)
私はここにタプルのリストを得た:
[(0.5,'!'),(1,'*'),(1.5,'#')]
私がやりたいことは数入力され
nは、リスト
の各タプルに拳の数と比較するので、それは0.5とそれが0.5よりも小さい見つけるを比較すると、それがcharを返します、nは仮定= 0.1 '!' > 0.5と比較しておくです
仮定するN = 0.7、「*」は< 1、それがchar返すこと
を見つけて、リスト全体を比較し、Dを見つけた後、最後のよりもまだ大きいです1、それだけで「n」の文字を返します
私は時間のような条件の多くと仕事してきたが、それでもこれに取得することはできません、ここに私のコードです:
find :: Double -> [(Double,Char)] -> Char
find d [] = ' '
find d xs
| d <= Double(xs[0]) = xs[0]
| d > Double(xs[0]) = find d tail(xs)
再帰を使用してください!
の配列と異なっています。 – immibis
@immibis私は最初のタプルがないリストを返すはずだと思っています。タプルのリストではうまくいかないということですか?そして、このコードには何がありますか? – o1xhack
私が間違っていないと、 'tail(xs)'は 'tail(xs)'と同じなので、 'find d tail(xs)'は 'find d tail xs'と同じです。 3つの引数 "を見つける。 – immibis