haskell:递归函数,返回具有特定条件的元组列表中的char(比较)

时间:2016-10-03 02:27:55

标签: python haskell

我在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)

请使用递归!

1 个答案:

答案 0 :(得分:3)

tuple与Haskell中的数组不同

find :: Double -> [(Double,Char)] -> Char
find d [] = ' '
find d (x:xs)
    | d <= fst x = snd x
    | otherwise = find d xs
相关问题