如何在 REPL 中隐藏名称?

How can I hide a name in the REPL?

如对 , the %hide directive 的回答中所述,允许使现有名称不可访问:

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
Can't disambiguate name: Main.fib, Prelude.Nat.fib

如何使我的代码中的 %hide 指令转移到 REPL 中?

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