命名实现到默认实现

时间:2016-05-18 13:41:08

标签: typeclass idris

我为类型为Int。

的类型类Ord定义了一个命名实现
[mijnOrd] Ord Int where
  compare n1 n2 = ...

如何导入此命名实现并将其用作"默认"

  • 所以在另一个模块中我想导入这个实现
  • 将其标记为默认
  • 并将其视为默认

-

sort [1,5,2] -- output without importing as default: [1,2,5]
sort [1,5,2] -- output with importing as default: [5,2,1]

这可能在伊德里斯吗?

1 个答案:

答案 0 :(得分:3)

这是可能的,因为Idris 0.12使用BTArrayAdapter.getItem(position).device //it is BluetoothDevice - 阻止:

在一个模块中导出您的命名界面,例如using

MyOrd.idr

然后只需在另一个模块中导入它,并将应该使用它的所有内容包装在相应的module MyOrd -- Reverse order for `Nat` export [myOrd] Ord Nat where compare Z Z = EQ compare Z (S k) = GT compare (S k) Z = LT compare (S k) (S j) = compare @{myOrd} k j - 块中,如下所示:

using

这应该打印-- Main.idr module Main import MyOrd using implementation myOrd test : List Nat -> List Nat test = sort main : IO () main = putStrLn $ show $ test [3, 1, 2]