Как создать пустую среду, представленную функцией

Я наткнулся на эту проблему в Интернете, которая показалась мне интересной, у нее было достойное объяснение, но я был озадачен решением. Так дано

type 'a fenv = name -> 'a 

создать значение типа

'a fenv

который был бы нашим пустым env. Я думал, что это что-то вроде следующего

exception NotFound of name
val empty = fn name => raise NotFound name

Где он может вернуть исключение для имени Notfound, но я могу ошибаться, потому что продолжаю получать

Type clash: expression of type
   'a alist -> 'a alist alist
cannot have type
   'a alist alist
Toplevel input:
val (_: 'a fenv) = empty
Unbound type constructor: fenv

Извините, если это просто, но все еще ново в sml. Может ли кто-нибудь объяснить, как мне поступить с решением?

Спасибо

1 ответ

Решение

Как создать пустую среду, представленную функцией

Вы могли бы сделать:

type name = string
exception NotFound of name
fun empty name = raise NotFound name

Я могу делать это неправильно, потому что я продолжаю получать

Type clash: expression of type
   'a alist -> 'a alist alist
cannot have type
   'a alist alist

Вы понимаете, что в вашем коде ничего не упоминается об алисте, верно? Возможно, вы либо используете REPL с устаревшим определением для type 'a fenvили ваш файл содержит несколько определений, одно из которых включает в себя "alist", а другое - "fenv".

Другие вопросы по тегам