我在haskell中学习与这种条件相混淆的递归函数:
我在这里得到了一个元组列表:
[(0.5,'!'),(1,'*'),(1.5,'#')]
我想要做的是输入一个数字n并与列表中每个元组的第一个数字进行比较
所以假设n = 0.1,当它比较0.5并发现它小于0.5时,它将返回char'!'
假设n = 0.7,其> 0.5并保持比较,发现它< 1,然后它将返回char' *'
并且在比较整个列表并且发现d仍然比最后一个更大之后,它将返回char' 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)
请使用递归!
答案 0 :(得分:3)
tuple与Haskell中的数组不同
find :: Double -> [(Double,Char)] -> Char
find d [] = ' '
find d (x:xs)
| d <= fst x = snd x
| otherwise = find d xs