В Haskell, if
является выражением, а не утверждением.Это означает, что он возвращает значение (например, функцию) вместо выполнения действия.Вот один из способов перевести ваш код:
ss = if odd length prod
then countConsinants cust
else countVowels cust
return if length ( cust intersect prod) > 0
then Just $ 1.5 * ss
else Nothing
Вот еще один способ:
return if length ( cust intersect prod) > 0
then Just $ 1.5 * if odd length prod
then countConsinants cust
else countVowels cust
else Nothing
Как указал Мэтт, ваш код Python не возвращает None
.Каждый путь кода устанавливает ss
в число.Если это так, как это должно работать, вот перевод на Haskell:
let ss = if odd $ length prod
then countConsonants cust
else countVowels cust
in if length (cust `intersect` prod) > 0
then 1.5 * ss
else ss