почему некоторые функции в структуре List требуют префикса «List», а некоторые нет? - PullRequest
0 голосов
/ 19 сентября 2018

(я использую SML / NJ)

Структура списка http://sml -family.org / Basis / list.html включает в себя @, hd, tl, null, concat,и т.д.

Некоторые из них доступны без префикса: @, hd, tl, [], concat.Но другие, такие как существует, и n-й требуют префикса List.см. ниже:

Standard ML of New Jersey v110.79 [built: Tue Aug  8 23:21:20 2017]
- op @;
val it = fn : 'a list * 'a list -> 'a list
- concat;
val it = fn : string list -> string
- nth;
stdIn:3.1-3.4 Error: unbound variable or constructor: nth
- exists;
stdIn:1.2-2.1 Error: unbound variable or constructor: exists
- List.nth;
[autoloading]
[library $SMLNJ-BASIS/basis.cm is stable]
[library $SMLNJ-BASIS/(basis.cm):basis-common.cm is stable]
[autoloading done]
val it = fn : 'a list * int -> 'a
- List.exists;
val it = fn : ('a -> bool) -> 'a list -> bool

Почему?Я попытался найти ответ в «Определении стандарта ML (1997)», но не смог найти ничего, связанного с этим.

1 Ответ

0 голосов
/ 19 сентября 2018

Некоторые имена доступны без оговорок, поскольку они также связаны в среде верхнего уровня библиотеки SML, включая те, которые вы перечислили.См. здесь для получения полного списка.

...