Mol*_*daa 13 syntax pattern-matching guard-clause idris
在haskell,人们可以写:
containsTen::Num a => Eq a => [a] -> Bool
containsTen (x : y : xs)
| x + y == 10 = True
| otherwise = False
Run Code Online (Sandbox Code Playgroud)
是否有可能在伊德里斯写一些相同的东西,而不用它ifThenElse
(我的真实案例比上面的更复杂)?
max*_*kin 13
伊德里斯没有完全像haskell那样的模式保护.有一个with子句在语法上相似(但更强大,因为它支持在依赖类型的存在下匹配):
containsTen : Num a => List a -> Bool
containsTen (x :: y :: xs) with (x + y)
| 10 = True
| _ = False
Run Code Online (Sandbox Code Playgroud)
您可以查看Idris教程第7节视图和"with"规则.