File: 220_sharingType.sml

package info (click to toggle)
smlsharp 4.1.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 123,732 kB
  • sloc: ansic: 16,725; sh: 4,347; makefile: 2,191; java: 742; haskell: 493; ruby: 305; cpp: 284; pascal: 256; ml: 255; lisp: 141; asm: 97; sql: 74
file content (40 lines) | stat: -rw-r--r-- 818 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
signature S =
sig
  type t
  type s
  sharing type t = s
end

structure S : S =
struct
  datatype t = D of int
  datatype s = E of int
end

(*
2012-07-12

Error:
  (name evaluation 220) Signature mismatch (datatype): S.t(2)

この形のsignatureを持ったstructureは存在し得ない。
definitionの上では許されているようだが、実体が存在しないものを受け入れるかどうか仕様を確認しないといけない。
*)

(*
2012-07-19 ohori
This is the same as 212_wheretype.sml;
this is the feature of SML#.
*)

(*
2017-08-07 katsu
そもそも最初の問題提起がおかしい.
この形のsignatureを持ったstructureは存在する.
structure S : S =
struct
  datatype t = D of int
  type s = t
end
上記のコードはSMLの定義上signature mismatchを起こす.
*)