1
考慮 - fun A()
呼叫fun B()
,反之亦然,我B()
之前實施A()
,像這樣:正向聲明
fun A() =
B() ;
fun B() =
A() ;
在這種情況下,SML/NJ口譯員提示 -
Error: unbound variable or c onstructor: B
我該如何解決?也許像正向聲明?
(離開它,它會導致無限循環)
考慮 - fun A()
呼叫fun B()
,反之亦然,我B()
之前實施A()
,像這樣:正向聲明
fun A() =
B() ;
fun B() =
A() ;
在這種情況下,SML/NJ口譯員提示 -
Error: unbound variable or c onstructor: B
我該如何解決?也許像正向聲明?
(離開它,它會導致無限循環)
沒有必要這樣來使用let此綁定。您可以在頂級聲明它還有:
fun a() = b()
and b() = a()
可以使用and
關鍵字來聲明相互遞歸函數。
fun A() = B()
and B() = A()
您還使用相同的關鍵字來製作相互遞歸的數據類型。
注意,通常你會在小寫的首字母寫的函數名稱:
fun a() = b()
and b() = a()
這有助於功能和價值構造區分。