在Haskell中创建没有参数的函数时出现分析错误
我试图创建一个没有参数的函数来创建一个列表。当我试图运行代码时,我得到一个解析错误,它无法编译,我不知道为什么 我一直试图在终端上运行它,但它不起作用 这是我的代码:在Haskell中创建没有参数的函数时出现分析错误,haskell,Haskell,我试图创建一个没有参数的函数来创建一个列表。当我试图运行代码时,我得到一个解析错误,它无法编译,我不知道为什么 我一直试图在终端上运行它,但它不起作用 这是我的代码: outfits = let pants = ["jeans", "khaki", "leggings"] shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"] shoes = ["br
outfits = let pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
outfits1 = [ (x, y, z) | z <- pants, y <- shirts, x <- shoes ]
oughts=let pants=[“牛仔裤”、“卡其色”、“紧身裤”]
衬衫=[“白色衬衫”、“灰色高领毛衣”、“粉色马球衫”、“绿色连帽衫”]
鞋=[“brogues”、“匡威”、“凉鞋”、“阿迪达斯”]
oughts1=[(x,y,z)| z如果没有let
表达式,您只需编写
outfits = [ (x, y, z) | z <- ["jeans", "khaki", "leggings"], y <- ["white shirt", "grey turtleneck", "pink polo", "green hoodie"], x <- ["brogues", "converse", "sandals", "adidas"] ]
或者,您可以使用where
子句编写此代码,该子句将“main”表达式放在第一位:
outfits = [ (x, y, z) | z <- pants, y <- shirts, x <- shoes ]
where pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
您仍然可以使用let
表达式或where
子句为装备的每个组件提供名称:
outfits = let pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
in (,,) <$> pants <*> shirts <*> shoes
oughts=let pants=[“牛仔裤”、“卡其色”、“紧身裤”]
衬衫=[“白色衬衫”、“灰色高领毛衣”、“粉色马球衫”、“绿色连帽衫”]
鞋=[“brogues”、“匡威”、“凉鞋”、“阿迪达斯”]
穿着(,)裤子衬衫鞋子
或
服装=(,)裤子衬衫鞋子
其中裤子=[“牛仔裤”、“卡其色”、“紧身裤”]
衬衫=[“白色衬衫”、“灰色高领毛衣”、“粉色马球衫”、“绿色连帽衫”]
鞋=[“brogues”、“匡威”、“凉鞋”、“阿迪达斯”]
如果
…..
看起来太深奥,您可以给模式一个更具描述性的名称:
outfits = mixAndMatch pants shirts shoes
where pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
mixAndMatch a b c = (,,) <$> a <*> b <*> c
oughts=mixAndMatch裤子衬衫鞋子
其中裤子=[“牛仔裤”、“卡其色”、“紧身裤”]
衬衫=[“白色衬衫”、“灰色高领毛衣”、“粉色马球衫”、“绿色连帽衫”]
鞋=[“brogues”、“匡威”、“凉鞋”、“阿迪达斯”]
mixAndMatch AB c=(,)AB c
let附带的中的在哪里?没有没有没有参数的函数。oughts1
只是一个列表。mixAndMatch=liftA3(,,)
,即使你不喜欢applicative样式,这可能更适合内联。或者,对于仍在学习语法的人来说,跳入applicative可能有点过分。@rampionzip3
不会计算三个列表的叉积。
outfits = (,,) <$> ["jeans", "khaki", "leggings"]
<*> ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
<*> ["brogues", "converse", "sandals", "adidas"]
outfits = let pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
in (,,) <$> pants <*> shirts <*> shoes
outfits = (,,) <$> pants <*> shirts <*> shoes
where pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
outfits = mixAndMatch pants shirts shoes
where pants = ["jeans", "khaki", "leggings"]
shirts = ["white shirt", "grey turtleneck", "pink polo", "green hoodie"]
shoes = ["brogues", "converse", "sandals", "adidas"]
mixAndMatch a b c = (,,) <$> a <*> b <*> c