在 Idris 中命名 return 值?

Naming return value in Idris?

在 Idris 中,可以在函数类型声明中显式命名参数,例如

length : (str : String) -> Nat

但是当我尝试命名 return 值时,例如

length : (str : String) -> (lengthOfStr : Nat)

idris 编译器抛出错误

unexpected end of input expecting "->"

为什么命名参数的相同语法不适用于 return 值?有没有办法在 Idris 中命名 return 值(以便它们可以在文档字符串中引用)?

不,那不可能,请看这个 issue。你关于 doc-string 的问题可能会改变一些观点,为什么不在那里问呢?但可能会有一个问题:有人可能会认为,例如f: (n : Nat) -> (n : Nat) 是有效的,并且只允许 f n = n 作为一个实现。但是不能指定return值,只能指定return类型。