小编Jam*_*ift的帖子

Haskell currying和模式匹配如何协同工作?

我是Haskell的新手.我知道函数是curry成为带有一个参数的函数.我不明白的是,在这种情况下,如何实现与多个值的模式匹配.例如:

假设我们有以下完全任意的函数定义:

myFunc :: Int -> Int -> Int
myFunc 0 0 = 0
myFunc 1 1 = 1
myFunc x y = x `someoperation` y
Run Code Online (Sandbox Code Playgroud)

部分应用的函数是否myFunc 0基本上返回:

partiallyAppliedMyFunc :: Int -> Int
partiallyAppliedMyFunc 0 = 0
partiallyAppliedMyFunc y = 0 `someoperation` y
Run Code Online (Sandbox Code Playgroud)

从而删除无法匹配的无关模式?或者......这里发生了什么?

haskell currying pattern-matching

16
推荐指数
1
解决办法
638
查看次数

为什么这些Clojure列表有所不同?

我正在查看一些4Clojure问题,并用我的一些代码遇到了一些奇怪的行为.经过进一步调查,似乎罪魁祸首是使用报价宏vs列表功能.为什么这在下面的代码中很重要,为什么会产生错误的结果?

user=> (= (class '(/ 1 2)) (class (list / 1 2)))
true
user=> (def a '(/ 1 2))
#'user/a
user=> (def b (list / 1 2))
#'user/b
user=> (class a)
clojure.lang.PersistentList
user=> (class b)
clojure.lang.PersistentList
user=> (apply (first a) (rest a))
2
user=> (apply (first b) (rest b))
1/2
user=> (class (first a))
clojure.lang.Symbol
user=> (class (first b))
clojure.core$_SLASH_
Run Code Online (Sandbox Code Playgroud)

clojure

3
推荐指数
1
解决办法
119
查看次数

标签 统计

clojure ×1

currying ×1

haskell ×1

pattern-matching ×1