克服Agda中Mixfix运算符的空白要求?

时间:2017-03-10 19:05:50

标签: parsing operators agda infix-operator

有没有办法告诉Agda某个字符标志着新令牌的开头?例如,我有以下(带有花哨的unicode括号):

data Term where
  _(_) : Term -> Term -> Term

我可以用作

f ( e⃗ )

但我真正喜欢的是将其用作

f(e⃗)

如果我这样做,Agda认为它是一个单一的标识符,并给出了一个非范围内的错误。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

Agda将任何连续的字母数字和运算符字符序列解析为单个标识符。如果不改变Agda词法分析器,就没有办法解决这个问题。这一切都在名称解析之前发生,所以没有办法声明某些名称不需要空格。

您可以尝试使用其他unicode空格字符来使代码看起来更紧凑,但我还没有发现任何效果都很好。零宽度空间显然实际上不是空格字符,emacs渲染其他空格与' '相同。