哈斯克尔';Javascript的s中缀运算符

哈斯克尔';Javascript的s中缀运算符,javascript,haskell,functional-programming,Javascript,Haskell,Functional Programming,Javascript中是否存在等效的构造。如果没有,您将如何创建一个 以下是中缀运算符在Haskell中的作用的简单解释: JavaScript没有列表类型,但它有Arrays 你可以用 var newArr = [val].concat(arr); 或者,您可以使用unshift()预先添加到数组,但它会改变原始数组 JavaScript没有:运算符、运算符重载或类似于运算符的方法,因此无法获得与Haskell类似的语法。JavaScript没有列表类型,但它有数组 你可以用 var new

Javascript中是否存在等效的构造。如果没有,您将如何创建一个

以下是中缀运算符在Haskell中的作用的简单解释:


JavaScript没有列表类型,但它有
Array
s

你可以用

var newArr = [val].concat(arr);
或者,您可以使用
unshift()
预先添加到数组,但它会改变原始数组


JavaScript没有
运算符、运算符重载或类似于运算符的方法,因此无法获得与Haskell类似的语法。

JavaScript没有列表类型,但它有
数组

你可以用

var newArr = [val].concat(arr);
或者,您可以使用
unshift()
预先添加到数组,但它会改变原始数组


JavaScript没有
运算符、运算符重载或类似于运算符的方法,因此您无法获得与Haskell类似的语法。

它不是最漂亮的,但在需要中缀的地方,它可能有助于提高可读性,使您的代码读起来像散文

function nfx(firstArg, fn, secondArg){
    return fn(firstArg, secondArg);
}

// Usage

function plus(firstArg, secondArg) {
    return firstArg + secondArg;
}

nfx(1, plus, 2);

它不是最漂亮的,但在需要中缀的地方,它可能有助于提高可读性,使代码读起来像散文

function nfx(firstArg, fn, secondArg){
    return fn(firstArg, secondArg);
}

// Usage

function plus(firstArg, secondArg) {
    return firstArg + secondArg;
}

nfx(1, plus, 2);

我看到莱拉·哈蒙已经和她联系上了

但我认为一个例子可能对其他人有用

下面是如何破解
数字
布尔
原型来处理链式中缀表达式,如
4<5<10

您可以通过将更多方法应用于更多原型来进一步扩展此功能。这有点难看,但有助于减少查询的冗长程度

//Usage code
(4) .gt (6) .gt (4) //false

(100) .lt (200) .lt (400) . gt(0) . gt(-1)//true

(100) [ '>' ] (50) [ '<' ] (20)//false



//Setup Code
(function(){

  var lastVal = null;


  var nP = Number.prototype
  var bP = Boolean.prototype

  nP.gt = function(other){
    lastVal = other;
    return this > other;
  }

  nP.lt = function(other){
    lastVal = other;
    return this < other;
  }

  bP.gt = function(other){
    var result = lastVal > other;
    lastVal = other;
    return result;
  }

  bP.lt = function(other){
    var result = lastVal < other;
    lastVal = other;
    return result;
  }

  bP['<'] = bP.lt
  bP['>'] = bP.gt
  nP['<'] = nP.lt
  nP['>'] = nP.gt


})()
//使用代码
(4) .gt(6).gt(4)//错误
(100)。lt(200)。lt(400)。gt(0)。gt(-1)//正确

(100)['>'](50)['我看到莱拉·哈蒙已经链接到了

但我认为一个例子可能对其他人有用

下面是如何破解
数字
布尔
原型来处理链式中缀表达式,如
4<5<10

您可以通过将更多方法应用于更多原型来进一步扩展此功能。这有点难看,但有助于减少查询的详细程度

//Usage code
(4) .gt (6) .gt (4) //false

(100) .lt (200) .lt (400) . gt(0) . gt(-1)//true

(100) [ '>' ] (50) [ '<' ] (20)//false



//Setup Code
(function(){

  var lastVal = null;


  var nP = Number.prototype
  var bP = Boolean.prototype

  nP.gt = function(other){
    lastVal = other;
    return this > other;
  }

  nP.lt = function(other){
    lastVal = other;
    return this < other;
  }

  bP.gt = function(other){
    var result = lastVal > other;
    lastVal = other;
    return result;
  }

  bP.lt = function(other){
    var result = lastVal < other;
    lastVal = other;
    return result;
  }

  bP['<'] = bP.lt
  bP['>'] = bP.gt
  nP['<'] = nP.lt
  nP['>'] = nP.gt


})()
//使用代码
(4) .gt(6).gt(4)//错误
(100).lt(200).lt(400).gt(0).gt(-1)//真

(100)['>'](50)['你想连接什么?
(:)
运算符通常被称为“cons运算符”,因为它不是Haskell中唯一的中缀运算符(例如,
+
也是中缀运算符)。你想连接什么?
(:)
运算符通常被称为“cons运算符”,因为它不是Haskell中唯一的中缀运算符(例如,
+
也是一个中缀运算符)。找到此链接,其中包含如何模拟中缀运算符的示例:链接已失效,但页面已失效。找到此链接,其中包含如何模拟中缀运算符的示例:链接已失效,但页面已失效。