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