下面的代码在Idris2中可以正常编译:
C : Nat
C = 2
claim : C = 2
claim = Refl
,但如果C
没有大写,则失败:
c : Nat
c = 2
claim : c = 2
claim = Refl
错误信息是
警告:我们即将隐式绑定以下小写名称。您可能无意中隐藏了相关的全局定义:c正在跟踪main错误:在处理右侧索赔时。当统一:2 = 2和:C = 22与c.不匹配
有没有办法告诉Idris编译器不要在类型中隐藏小写的全局名称?
我不知道是否有编译器选项或类似的,但您可以限定c
。如果在模块Foo
中,使用
c : Nat
c = 2
claim : Foo.c = 2
claim = Refl