Синтаксис для вложенных подписей? - PullRequest
2 голосов
/ 08 марта 2011

В моей программе ml я использую вложенные структуры для структурирования своего кода. Я определяю подписи для этих структур - но я не могу получить вложенные подписи.

Пример:

structure Example =
struct
  structure Code = 
  struct
    datatype mytype = Mycons of string
  end
end

для этого я хотел бы сделать что-то вроде этого:

signature EXAMPLE = 
sig
  signature CODE = (* or stucture Code - doesn't matter *)
  sig
    datatype mytype
  end
end

Теперь это не работает; Я получаю синтаксические ошибки. Мои вопросы:

  1. Это плохая идея? Если так, то почему?
  2. Как мне это сделать? Как применить вложенную подпись к вложенной структуре?

1 Ответ

3 голосов
/ 10 марта 2011

Синтаксис в сигнатурах при наличии вложенных структур требует некоторого привыкания.

При попытке указать сигнатуру, если для структуры внутри сигнатуры вы делаете это следующим образом

signature JSON =
sig    
  type t

  .. some signature stuff

  structure Converter : sig    
    type json
    type 'a t

    ... Converter specification stuff
    ... using type json as the parent signatures type t    
  end where type json = t    
end

См. Эти файлы Hoffman [ .sml ] [ .sig ] для простых примеров этого и посмотрите файл Tree [ .sig ] длянемного более сложный пример.

Помните, что вам нужно упомянуть вашу спецификацию подписи в вашей структуре, иначе будет бессмысленно делать подпись в первую очередь.

...