有没有办法告诉Agda某个字符标志着新令牌的开头?例如,我有以下(带有花哨的unicode括号):
data Term where
_(_) : Term -> Term -> Term
我可以用作
f ( e⃗ )
但我真正喜欢的是将其用作
f(e⃗)
如果我这样做,Agda认为它是一个单一的标识符,并给出了一个非范围内的错误。有办法解决这个问题吗?
答案 0 :(得分:2)
Agda将任何连续的字母数字和运算符字符序列解析为单个标识符。如果不改变Agda词法分析器,就没有办法解决这个问题。这一切都在名称解析之前发生,所以没有办法声明某些名称不需要空格。
您可以尝试使用其他unicode空格字符来使代码看起来更紧凑,但我还没有发现任何效果都很好。零宽度空间显然实际上不是空格字符,emacs渲染其他空格与' '
相同。