使用$进行中缀功能评估

时间:2015-08-29 16:33:21

标签: haskell

$是一个具有最低优先级的中缀运算符:

  

f $ a = f a

这是否意味着,在下面的表达式中,

部分
  

$ 2 ^ 2

应首先评估

然后再加2美元?首先评估2 + 2

  

前奏> (2 ^)$ 2 + 2

返回:

  

16

2 个答案:

答案 0 :(得分:4)

没有。尝试将优先级视为关于首先评估的内容"以及更多关于插入括号的位置。

$具有最低优先级的事实意味着将括号插入到其右侧的所有内容中(如果需要,分别在其左侧,但这里不需要它们) )。所以

  

(2 ^)$ 2 + 2

相当于

  

(2 ^)$(2 + 2)

当然是

  

(2 ^)4(即16)

答案 1 :(得分:2)

优先规则可能令人困惑,但我喜欢将其视为“较低优先级”意味着“稍后再做”。由于using UnityEngine; using System.Collections; public class CameraSettings : MonoBehaviour { private float targetRatio = 9f/16f; // Use this for initialization void Start () { Camera cam = GetComponent<Camera>(); cam.aspect = targetRatio; } } 具有最低优先级(例如,低于$),因此在 (+)之后执行。因此,(+)(2^) $ 2 + 2评估为部分应用的函数,然后将(2^)评估为2+2,然后将4应用于4以获取{{1} }}