Haskell尾空函数为空列表
问题描述:
我有一个函数应该只返回列表的尾部的问题。这些函数是myTail,即使输入是空列表,也应该提供可用的结果。Haskell尾空函数为空列表
我想明白了所有3种方式:模式匹配,守卫方程和条件表达式
这个工程:
> myTail_pat :: [a] -> [a]
> myTail_pat (x:xs) = xs
> myTail_pat [] = []
但这:
> myTail_guard (x:xs) | null xs = []
> | otherwise = xs
给我的错误:程序错误:模式匹配失败:myTail_guard [] 我该如何声明没有模式的函数?
谢谢。
答
下降1是安全的
drop 1 []
-- result: []
可以帮助你:http://cs.anu.edu.au/Student/comp1100/haskell/tourofsyntax.html#卫兵 – Artelius 2009-11-18 22:28:35
你可以'myTail = drop 1' – newacct 2009-11-18 23:40:04
模式匹配版本更像haskell一样。 – Rayne 2009-11-19 08:58:59