Import 如何在REPL中隐藏名称?

Import 如何在REPL中隐藏名称?,import,module,read-eval-print-loop,ambiguous,idris,Import,Module,Read Eval Print Loop,Ambiguous,Idris,如回答中所述,允许将现有名称设置为不可访问: import Data.String %hide fib %default total fib : Nat -> Nat fib n = loop n 0 1 where loop : Nat -> Nat -> Nat -> Nat loop Z a _ = a loop (S k) a b = loop k b (a + b) parseNat : String -> Maybe

如回答中所述,允许将现有名称设置为不可访问:

import Data.String

%hide fib

%default total

fib : Nat -> Nat
fib n = loop n 0 1
  where
    loop : Nat -> Nat -> Nat -> Nat
    loop Z a _ = a
    loop (S k) a b = loop k b (a + b)

parseNat : String -> Maybe Nat
parseNat = map cast . parsePositive

response : String -> String
response s = case parseNat s of
  Just n => "fib n = " ++ show (fib n)
  Nothing => "n ∉ ℕ"

partial main : IO ()
main = repl "n = " ((++ "\n") . response)
这在上面的代码中工作良好:

*Main>:exec
n=10
fib n=55
但是,它似乎没有结转到REPL:

*Main>fib 10
无法消除名称的歧义:Main.fib,Prelude.Nat.fib

如何使
%hide
指令从我的代码带入REPL?

我认为您不能,调用函数的唯一方法是使用它的完全限定名,例如
Main.fib 10