指定解释范围以将十进制字符串解释为Nat

时间:2018-02-04 04:37:44

标签: idris

有没有办法告诉Idris将210等十进制字符串解释为Nat? repl中的默认行为是将它们解释为Integer。例如,在Coq中,可以使用%指定解释范围以消除符号的歧义,因此我想我希望存在10%Nat之类的内容。伊德里斯有类似的东西吗?

1 个答案:

答案 0 :(得分:4)

标准前奏包含

the : (a : Type) -> (value: a) -> a
the _ = id

可用于提供显式类型:

the Integer 10
the Nat 6
the (Vect 3 Int) [1,2,3]

还有with [namespace] [expr],其namespace内的expr权限。这似乎更接近%,但the似乎更常用。

with Vect [['a', 'b']] -- Vect 1 (Vect 2 Char)
with List [['a', 'b']] -- List (List Char)

您可以为the制作语法扩展名:

syntax [expr] "%" [type] = the type expr
5%Nat
10%Int

但不适用于with