可以用 let ... in ... 和 where ... 语法定义临时变量,where 可以后置定义,而 let in 则是前置
1 2 3 4 5 6 7 8 9 10 11
solve :: Int -> Int -> [Int] -> String solve n m doors = do case indices of [] -> "YES" _ -> case end - start + 1of x | x <= m -> "YES" _ -> "NO" where indices = elemIndices 1 doors end = last indices start = head indices
greet :: String -> String -> String greet"Finland" name = "Hei, " ++ name greet"Italy" name = "Ciao, " ++ name greet"England" name = "How do you do, " ++ name greet _ name = "Hello, " ++ name