标签: currying

使用jQuery检查它们的存在时加载图像是行不通的

我有这个功能,应该检查图像的存在,直到他们停止出现,基于他们的标题:

function LoadPictures(){
        const PIC_MAX = 12;

        var i = 1;

        while (i <= PIC_MAX){
            $.ajax({url: "pic" + i + ".jpg",
                type: "HEAD",
                success: function(){
                    $("body").append("<img src='pic" + i + ".jpg' />");
                },
                error: function(){
                    i = PIC_MAX + 1;
                }
            });

            i++;
        }
    }
Run Code Online (Sandbox Code Playgroud)

然而,当我运行该功能时,我得到的只是空白框.我知道循环根据出现的框数量正确计算了现有图像,但无法加载它们.这是为什么?

javascript ajax jquery asynchronous currying

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

写一个lambda表达式的"curried版本"

我正在研究Haskell,并试图理解如何将currying的概念应用于函数.我理解currying本质上是一种带有多个参数的函数并将函数应用于一个参数的方法,返回一个应用于第二个函数的函数,依此类推......而不会失去任何表达性.我正在研究的一个教程问:

"写一个咖喱版2 * (\x y -> x*y)2 3"

我希望有人可以帮我告诉我如何解决这个问题.提前致谢

编辑:回应两个评论者,我可以看到认识

(\x y -> x*y) :: Num a => a -> a -> a

......是我的第一步.在功能性编程方面我的学习曲线相当缓慢(也是新的SO海报,所以我打破了任何礼仪的借口)......我的下一步是什么?

编辑2:@Mikhail,我看到uncurry应用于lambda表达式的类型会形成某种形式(给定uncurry :: (a -> b -> c) -> (a,b) -> c)

Num a => (a,a) -> a 
Run Code Online (Sandbox Code Playgroud)

lambda haskell currying

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

为什么推理引擎需要带有currying的显式类型

让我们定义f一个支持currying的函数:

def f(a: Int)(b: Int) = a + b
Run Code Online (Sandbox Code Playgroud)

此代码无法编译

def g= f(1)
<console>:10: error: missing arguments for method f;
follow this method with `_' if you want to treat it as a partially applied function
   def g= f(1)
Run Code Online (Sandbox Code Playgroud)

我发现了这2个解决方法:

scala> def h = f(1) _
h: Int => Int

scala> def i : Int => Int = f(1)
i: Int => Int
Run Code Online (Sandbox Code Playgroud)

但我不明白为什么推理引擎需要帮助这样一个微不足道的案例呢?

scala currying

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

从函数定义Haskell中推断函数类型

所以我正在对Haskell进行测试,一个问题说:

让功能成为

lolo g x = ys
      where ys = [x] ++ filter (curry g x) ys
Run Code Online (Sandbox Code Playgroud)

然后确定名为lolo的函数的类型.选项是:

a) (a,b) -> Bool -> b -> [(a,b)]
b) (b -> b -> b) -> Bool -> [b]
c) ((b,b) -> Bool) -> b -> [b]
d) (a -> b -> Bool) -> b -> [c]
Run Code Online (Sandbox Code Playgroud)

有人可以解释它是哪一个,为什么?我真的很困惑这个......我不明白的是:

1)咖喱功能只适用于功能吗?不是可能是元组的数据类型?那么你可以推断出g在这种情况下是一个函数吗?如果g和x都是函数怎么办?是否有可能使用咖喱与第n个参数?我只看到咖喱与1参数一起使用.

2)我不太了解的另一件事是ys定义中的递归.所以ys是由ys定义的,但是在这种情况下我没有看到基本情况.它会永远结束吗?也许是过滤函数使递归结束.

3)还在咖喱gx =咖喱(gx)对吧?(这是关于功能应用优先级的问题)

非常感谢

haskell types function filter currying

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

函数参数是如何定义的?

对于这个功能:

plus1 = (+) 1
Run Code Online (Sandbox Code Playgroud)

我可以用 :

Prelude> plus1 3
4
Run Code Online (Sandbox Code Playgroud)

plus1的类型是

plus1 :: Integer -> Integer
Run Code Online (Sandbox Code Playgroud)

如何在这里允许函数参数Integer?在我的函数定义中,定义了Integer函数参数?

我不确定我期望发生什么,但是来自Java,所有参数都需要被定义为方法的一部分,但这里似乎有一些事情在幕后发生?

haskell currying

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

JavaScript和ES6中用于咖喱函数的函数应用程序

我喜欢ECMAScript 6允许您编写如下的咖喱函数:

var add = x => y => z => x + y + z;
Run Code Online (Sandbox Code Playgroud)

但是,我讨厌我们需要在咖喱函数的每个参数中加上括号:

add(2)(3)(5);
Run Code Online (Sandbox Code Playgroud)

我希望能够一次将咖喱函数应用于多个参数:

add(2, 3, 5);
Run Code Online (Sandbox Code Playgroud)

我该怎么办?我不在乎性能。

javascript functional-programming currying apply ecmascript-6

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

在haskell中编织列表

我试图创建一个函数来编织两个列表一起例如 [1,3,5][2,4]- >[1,2,3,4,5]

我得到了我必须做的基本原则并检查但是我遇到了所需类型的问题

interleave :: ([a],[a]) -> [a] 
Run Code Online (Sandbox Code Playgroud)

关于不同数量的参数给出错误.到目前为止,这个版本给了我最少的错误

interleave ([],[]) = []
interleave (xs,[]) = [xs]
interleave ([],ys) = [ys]
interleave (x:xs) (y:ys) = x : y : interleave xs ys
Run Code Online (Sandbox Code Playgroud)

我已经尝试过搞乱参数和输出几次但是我对haskell语法不熟悉所以我真的不知道我哪里出错了

第2部分:我还有一个测试文件,以确保功能是正确的,所以如果我在这之后仍然遇到麻烦(因为我得到类似的输入/输出不匹配导致我改变到我现在拥有的)我也可能会发布该代码以获取帮助

merge haskell list currying pattern-matching

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

多链式lambda表达式?

我偶然发现了这个代码高尔夫问题:

给定一个字符串s和一个n表示索引的整数s,输出第 - 个位置s的字符n被删除.

得票最高的答案(截至本文)是在C#中.

s=>n=>s.Remove(n,1);
Run Code Online (Sandbox Code Playgroud)

这种多重=>语法是什么?它看起来类似于lambda表达式(s,n)=>s.Remove(n,1),但我无法弄清楚如何使用此代码.

c# lambda currying

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

在mmap中执行代码以生成可执行代码段错误

我正在尝试编写一个复制函数的函数(并最终修改其程序集)并返回它.这适用于一个级别的间接,但在两个我得到段错误.

这是一个最小(非)工作示例:

#include <stdio.h>
#include <string.h>
#include <sys/mman.h>

#define BODY_SIZE 100

int f(void) { return 42; }
int (*G(void))(void) { return f; }
int (*(*H(void))(void))(void) { return G; }

int (*g(void))(void) {
    void *r = mmap(0, BODY_SIZE, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
    memcpy(r, f, BODY_SIZE);
    return r;
}

int (*(*h(void))(void))(void) {
    void *r = mmap(0, BODY_SIZE, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
    memcpy(r, g, BODY_SIZE);
    return r;
}

int main() {
    printf("%d\n", f());
    printf("%d\n", G()());
    printf("%d\n", g()());
    printf("%d\n", H()()());
    printf("%d\n", h()()()); // This …
Run Code Online (Sandbox Code Playgroud)

c linux assembly function-pointers currying

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

Scala中的Curry函数

我是Scala的新手,我刚刚开始学习它,现在尝试一些练习。特别是我对此很难理解。

我了解到这一(f: (A, B) => C)部分,但其余的我不太明白。有人可以解释匿名功能部分之后发生了什么吗?

谢谢!

这是功能:

def curry[A, B, C](f: (A, B) => C): A => (B => C) = a => b => f(a, b)
Run Code Online (Sandbox Code Playgroud)

scala currying

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