Haskell 我可以在where语法下定义多个函数吗?

Haskell 我可以在where语法下定义多个函数吗?,haskell,Haskell,我只看到一个例子,它检查一个列表是否是非退化的 nondec :: Ord a => [a] -> Bool nondec xs = and (map leq (zip xs (tail xs))) where leq (x, y) = x <= y nondec::Ord a=>[a]->Bool nondec xs=and(映射leq(zip-xs(tail-xs))) 式中,leq(x,y)=x缩进,通常为: nondec :: Ord a =&

我只看到一个例子,它检查一个列表是否是非退化的

nondec :: Ord a => [a] -> Bool
nondec xs = and (map leq (zip xs (tail xs)))
            where leq (x, y) = x <= y
nondec::Ord a=>[a]->Bool
nondec xs=and(映射leq(zip-xs(tail-xs)))
式中,leq(x,y)=x缩进,通常为:

nondec :: Ord a => [a] -> String
nondec as = map leq as where
                          leq = id
                          map _ _ = "Hi!"
和往常一样,缩进:

nondec :: Ord a => [a] -> String
nondec as = map leq as where
                          leq = id
                          map _ _ = "Hi!"
我可以这样定义吗

where leq (x, y) = x <= y
      map(...)
为什么不试试呢?因为是的,你完全可以这样做
leq
map
只需在同一列中开始,并在
where
行开始的列右侧开始(不一定在
where
本身的右侧)

我认为维基百科很好

我可以这样定义吗

where leq (x, y) = x <= y
      map(...)
为什么不试试呢?因为是的,你完全可以这样做
leq
map
只需在同一列中开始,并在
where
行开始的列右侧开始(不一定在
where
本身的右侧)


我认为维基百科相当不错。

也许值得指出的是,这明显比必要的缩进要多。我通常只会在那里缩进2个空格(有些人喜欢4个空格)。@DavidYoung当然,这只是为了强调这两个语句都属于where块。unrelated:您将java标记放在。。。这肯定不是java。请对这些编辑更加小心!我想这应该是C#?!可能值得指出的是,这明显比必要的缩进更多。我通常只会在那里缩进2个空格(有些人喜欢4个空格)。@DavidYoung当然,这只是为了强调这两个语句都属于where块。unrelated:您将java标记放在。。。这肯定不是java。请对这些编辑更加小心!我想这应该是C#?!小提示:您可以将它们放在
的正下方,而无需额外缩进。这将为您节省水平(屏幕)空间.Off-topic,而不是显式定义
的未载波版本(小提示:您可以将它们放在
位置的正下方,无需额外缩进)。这将为您节省水平(屏幕)空间.Off-topic,而不是显式定义
的未载波版本(