首页 文章
  • 4 votes
     answers
     views

    部分评估和讨论

    我已经开始了解一些与currying相关的例子,但我仍然不满意我想要的currying概念 . 我知道currying可以用来做部分评估,但我不确定它在某些情况下会如何起作用 . 我知道它在以下示例中是如何工作的: fun funkyPlus x y = x*x+y; 所以,假设我们只传递x的参数,那么它等效于以下内容: fun funkyPlus 3 = (fn x => fn y =&...
  • 1 votes
     answers
     views

    写一个lambda表达式的“curried版本”

    我正在研究Haskell,并试图理解如何将currying的概念应用于函数 . 我理解currying本质上是一种带有多个参数的函数并将函数应用于一个参数的方法,返回一个应用于第二个函数的函数,依此类推......而不会失去任何表达性 . 我正在研究的一个教程问: “写一个咖喱版的 2 * (\x y -> x*y)2 3 ” 我希望有人可以帮我告诉我如何解决这个问题 . 提前致谢 编辑:回...
  • 1 votes
     answers
     views

    累积咖喱功能(SML)

    我有一系列问题,我一直在努力,似乎无法理解最后一个问题 . 这是第一个问题,我的解决方案是: a)我们常常对计算Σi= m..n f(i)感兴趣,i = m到n的函数值f(i)之和 . 定义sigma f m n,它计算Σi= m..n f(i) . 这与定义sigma(f,m,n)不同 . fun sigma f m n = if (m=n) then f(m) else (f(m) + s...
  • 6 votes
     answers
     views

    动态currying,以及如何在JavaScript变量中保存函数和值[重复]

    这个问题在这里已有答案: Variadic curried sum function 11个答案 我正在学习JavaScript,最近我遇到了一个practice problem,它要求我构建一个可以创建输出的函数,如下所示: var threeSum= sum(3); threeSum //3 threeSum(4) //7 threeSum(4)(3) //10 threeSum(4)(3...
  • 528 votes
     answers
     views

    什么是'Currying'?

    我在几篇文章和博客中看到了对curried函数的引用,但我找不到一个好的解释(或者至少有一个有意义的解释!)
  • 4 votes
     answers
     views

    OCaml表达式类型问题

    我正在尝试创建一个OCaml函数,将一个字符串中的'a'添加到给定的参数中 . let rec count_l_in_word (initial : int) (word : string) : int= if String.length word = 0 then initial else if word.[0] = 'a' then count_l_in_wo...
  • 44 votes
     answers
     views

    两种在Scala中定义函数的方法 . 有什么不同?

    这是一个定义和尝试一些函数的Scala会话: scala> def test1(str: String) = str + str; test1: (str: String)java.lang.String scala> test1("ab") res0: java.lang.String = abab 很好地工作 . scala> val test...
  • 4 votes
     answers
     views

    在Scala中,是否可以“定义”def的类型参数?

    假设我有一个带有多个类型参数的def: def foo[A, B, C](b: B, c: C)(implicit ev: Writer[A]) 但是,预期用法是应推断类型参数 B 和 C (基于传入的参数) . 调用者只需要明确指定 A (例如,编译器选择适当的隐式) . 不幸的是,Scala只允许调用者指定所有类型参数或不允许任何类型参数 . 从某种意义上说,我希望咖喱的类型参数: def f...
  • 0 votes
     answers
     views

    具有嵌套闭包的Redux动作创建器

    有没有办法可以在Redux的动作创建器中返回多个嵌套闭包? 考虑一个 log 动作创建者而不是接受 log(topic, level, message) ,可以写成4个嵌套函数,每个函数只接受整个参数的一个范围,如 topic => level => message => (dispatch, getState) ? 直线前进: function log(topic, level...
  • 1 votes
     answers
     views

    了解Typescript语法

    我刚刚开始学习打字稿,我发现理解语法非常困难 . 我提供的笔记不足以澄清我的理解,所以我希望得到一些帮助 . 在我的笔记中,我有两个打字稿功能: const operationOnTwoNumbers = (f:(x:number, y:number) => number) => // I don't understand this line (x:numbe...
  • 5 votes
     answers
     views

    F#:curried overload / tupled overload问题

    在将一些代码迁移到VS2010 b1中包含的最新版本的F#时,我遇到了一个问题,我想知道是否有可用的解决方法 - 如果没有 - 为什么F#编译器的行为被修改为不支持该方案 . type Foo(a) = [<OverloadID("CurriedAbc")>] member public x.Abc (p:(oneType * anotherType...
  • 0 votes
     answers
     views

    函数类型签名中的右关联性

    我很难理解Haskell中类型签名背后的原因 . 1)因为 -> 被认为是右关联的,是否意味着它可以用类似的方式理解,例如4 ^(2 ^(3 ^ 2))? 2)使用简单函数的类型签名来表达我的疑虑(解释我理解它的方式,我将使用 a , b , c 而不是 Num a => a 或 Int ): myAdd :: a -> b -> c myAdd x y = x+y 这意...
  • 1 votes
     answers
     views

    SML currying问题

    下周我会有一个中期即将到来,我正在讨论课堂上提供的sml笔记 . 我遇到了一个令人讨厌的例子,我不确定它是如何工作的 . 它是一个简单的函数,可以计算数字的幂 . 这是函数定义: fun pow 0 n = 1 | pow k n = n*pow(k-1)n 当我们传递以下参数时,我不确定这个函数是如何工作的: val x = pow 2 2 这是我看到它的方式: =2*pow(1)2 =2*...
  • 20 votes
     answers
     views

    是否有可能在Scala中“嘲笑”更高级的类型?

    假设我有一个具有两个类型参数的特征,例如: trait Qux[A, B] 和具有较高类型参数的另一个特征,例如, trait Turkle[C[_]] 我希望能够为 Qux 的一个类型参数替换一个固定值,以便它可以用于参数化 Turkle . 这是一个示例(在Scala中没有意义的代码!): trait Baz[A] extends Turkle[Qux[A, _]] 任何人有任何想法如...

热门问题