List 在haskell中切换列表中的每个元素
我必须编写一个函数来切换给定布尔值的列表,例如: 输入:切换[真、假、假] 输出:[假、真、真] 这就是我想到的List 在haskell中切换列表中的每个元素,list,haskell,boolean,non-exhaustive-patterns,List,Haskell,Boolean,Non Exhaustive Patterns,我必须编写一个函数来切换给定布尔值的列表,例如: 输入:切换[真、假、假] 输出:[假、真、真] 这就是我想到的 toggle :: [Bool] -> [Bool] toggle [a] = not a:[a] toggle [] = [] 我一直在犯这样的错误: ***例外:Uebung3.hs:38:1-20:功能切换中的非穷举模式 这是一个非常基本的问题,我来自Java,刚刚开始学习Haskell。作为一种模式,[a]是一个单元素列表:一个只包含一个元素a的列表 作为类型,[a]
toggle :: [Bool] -> [Bool]
toggle [a] = not a:[a]
toggle [] = []
我一直在犯这样的错误:
***例外:Uebung3.hs:38:1-20:功能切换中的非穷举模式
这是一个非常基本的问题,我来自Java,刚刚开始学习Haskell。作为一种模式,[a]是一个单元素列表:一个只包含一个元素a的列表
作为类型,[a]是a类型值的列表。但不是作为一种模式
模式a:as代表一个非空列表,其中头元素a和其余元素as。将其用作等式中的模式:
-- toggle [a] = not a:[a]
toggle (a : as) = not a : _______ as
toggle [] = []
您需要通过填充空格来完成它,以使此定义递归
当定义引用self以对其输入的其余部分进行辅助调用时,定义是递归的
模式[]空列表和a:as非空列表是互斥的。更重要的是,它们一起是详尽无遗的:列表值没有其他可能
但是模式[]和[a]并不是详尽无遗的:它们不包括两个或更长元素的列表。[a]模式与a:[]相同,它是一个以空列表作为尾部的列表。作为一个模式,[a]是一个单元素列表:一个只包含一个元素a的列表
作为类型,[a]是a类型值的列表。但不是作为一种模式
模式a:as代表一个非空列表,其中头元素a和其余元素as。将其用作等式中的模式:
-- toggle [a] = not a:[a]
toggle (a : as) = not a : _______ as
toggle [] = []
您需要通过填充空格来完成它,以使此定义递归
当定义引用self以对其输入的其余部分进行辅助调用时,定义是递归的
模式[]空列表和a:as非空列表是互斥的。更重要的是,它们一起是详尽无遗的:列表值没有其他可能
但是模式[]和[a]并不是详尽无遗的:它们不包括两个或更长元素的列表。[a]模式与a:[]模式相同,a:[]是一个以空列表为尾部的列表。对于替代解决方案,请查看,对于替代解决方案,请查看