mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
@@ -2025,8 +2025,9 @@ Standard ML:
|
|||||||
aliases:
|
aliases:
|
||||||
- sml
|
- sml
|
||||||
extensions:
|
extensions:
|
||||||
- .sml
|
- .ML
|
||||||
- .fun
|
- .fun
|
||||||
|
- .sml
|
||||||
|
|
||||||
Stata:
|
Stata:
|
||||||
type: programming
|
type: programming
|
||||||
|
|||||||
@@ -566,6 +566,7 @@
|
|||||||
".nut"
|
".nut"
|
||||||
],
|
],
|
||||||
"Standard ML": [
|
"Standard ML": [
|
||||||
|
".ML",
|
||||||
".fun",
|
".fun",
|
||||||
".sig",
|
".sig",
|
||||||
".sml"
|
".sml"
|
||||||
@@ -733,8 +734,8 @@
|
|||||||
".gemrc"
|
".gemrc"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"tokens_total": 613550,
|
"tokens_total": 613712,
|
||||||
"languages_total": 801,
|
"languages_total": 802,
|
||||||
"tokens": {
|
"tokens": {
|
||||||
"ABAP": {
|
"ABAP": {
|
||||||
"*/**": 1,
|
"*/**": 1,
|
||||||
@@ -60840,67 +60841,67 @@
|
|||||||
"newplayer.MoveTo": 1
|
"newplayer.MoveTo": 1
|
||||||
},
|
},
|
||||||
"Standard ML": {
|
"Standard ML": {
|
||||||
|
"structure": 15,
|
||||||
|
"LazyBase": 4,
|
||||||
|
"LAZY_BASE": 5,
|
||||||
|
"struct": 13,
|
||||||
|
"type": 6,
|
||||||
|
"a": 78,
|
||||||
|
"exception": 2,
|
||||||
|
"Undefined": 6,
|
||||||
|
"fun": 60,
|
||||||
|
"delay": 6,
|
||||||
|
"f": 46,
|
||||||
|
"force": 18,
|
||||||
|
"(": 840,
|
||||||
|
")": 845,
|
||||||
|
"val": 147,
|
||||||
|
"undefined": 2,
|
||||||
|
"fn": 127,
|
||||||
|
"raise": 6,
|
||||||
|
"end": 55,
|
||||||
|
"LazyMemoBase": 4,
|
||||||
|
"datatype": 29,
|
||||||
|
"|": 226,
|
||||||
|
"Done": 2,
|
||||||
|
"of": 91,
|
||||||
|
"lazy": 13,
|
||||||
|
"unit": 7,
|
||||||
|
"-": 20,
|
||||||
|
"let": 44,
|
||||||
|
"open": 9,
|
||||||
|
"B": 2,
|
||||||
|
"inject": 5,
|
||||||
|
"x": 74,
|
||||||
|
"isUndefined": 4,
|
||||||
|
"ignore": 3,
|
||||||
|
";": 21,
|
||||||
|
"false": 32,
|
||||||
|
"handle": 4,
|
||||||
|
"true": 36,
|
||||||
|
"toString": 4,
|
||||||
|
"if": 51,
|
||||||
|
"then": 51,
|
||||||
|
"else": 51,
|
||||||
|
"eqBy": 5,
|
||||||
|
"p": 10,
|
||||||
|
"y": 50,
|
||||||
|
"eq": 3,
|
||||||
|
"op": 2,
|
||||||
|
"compare": 8,
|
||||||
|
"Ops": 3,
|
||||||
|
"map": 3,
|
||||||
|
"Lazy": 2,
|
||||||
|
"LazyFn": 4,
|
||||||
|
"LazyMemo": 2,
|
||||||
"signature": 2,
|
"signature": 2,
|
||||||
"LAZY_BASE": 3,
|
|
||||||
"sig": 2,
|
"sig": 2,
|
||||||
"type": 5,
|
|
||||||
"a": 74,
|
|
||||||
"lazy": 12,
|
|
||||||
"-": 19,
|
|
||||||
")": 826,
|
|
||||||
"end": 52,
|
|
||||||
"LAZY": 1,
|
"LAZY": 1,
|
||||||
"bool": 9,
|
"bool": 9,
|
||||||
"val": 143,
|
|
||||||
"inject": 3,
|
|
||||||
"toString": 3,
|
|
||||||
"(": 822,
|
|
||||||
"string": 14,
|
"string": 14,
|
||||||
"eq": 2,
|
|
||||||
"*": 9,
|
"*": 9,
|
||||||
"eqBy": 3,
|
|
||||||
"compare": 7,
|
|
||||||
"order": 2,
|
"order": 2,
|
||||||
"map": 2,
|
|
||||||
"b": 58,
|
"b": 58,
|
||||||
"structure": 10,
|
|
||||||
"Ops": 2,
|
|
||||||
"LazyBase": 2,
|
|
||||||
"struct": 9,
|
|
||||||
"exception": 1,
|
|
||||||
"Undefined": 3,
|
|
||||||
"fun": 51,
|
|
||||||
"delay": 3,
|
|
||||||
"f": 37,
|
|
||||||
"force": 9,
|
|
||||||
"undefined": 1,
|
|
||||||
"fn": 124,
|
|
||||||
"raise": 5,
|
|
||||||
"LazyMemoBase": 2,
|
|
||||||
"datatype": 28,
|
|
||||||
"|": 225,
|
|
||||||
"Done": 1,
|
|
||||||
"of": 90,
|
|
||||||
"unit": 6,
|
|
||||||
"let": 43,
|
|
||||||
"open": 8,
|
|
||||||
"B": 1,
|
|
||||||
"x": 59,
|
|
||||||
"isUndefined": 2,
|
|
||||||
"ignore": 2,
|
|
||||||
";": 20,
|
|
||||||
"false": 31,
|
|
||||||
"handle": 3,
|
|
||||||
"true": 35,
|
|
||||||
"if": 50,
|
|
||||||
"then": 50,
|
|
||||||
"else": 50,
|
|
||||||
"p": 6,
|
|
||||||
"y": 44,
|
|
||||||
"op": 1,
|
|
||||||
"Lazy": 1,
|
|
||||||
"LazyFn": 2,
|
|
||||||
"LazyMemo": 1,
|
|
||||||
"functor": 2,
|
"functor": 2,
|
||||||
"Main": 1,
|
"Main": 1,
|
||||||
"S": 2,
|
"S": 2,
|
||||||
@@ -66955,7 +66956,7 @@
|
|||||||
"SourcePawn": 2080,
|
"SourcePawn": 2080,
|
||||||
"SQL": 1485,
|
"SQL": 1485,
|
||||||
"Squirrel": 130,
|
"Squirrel": 130,
|
||||||
"Standard ML": 6405,
|
"Standard ML": 6567,
|
||||||
"Stata": 3133,
|
"Stata": 3133,
|
||||||
"Stylus": 76,
|
"Stylus": 76,
|
||||||
"SuperCollider": 133,
|
"SuperCollider": 133,
|
||||||
@@ -67143,7 +67144,7 @@
|
|||||||
"SourcePawn": 1,
|
"SourcePawn": 1,
|
||||||
"SQL": 5,
|
"SQL": 5,
|
||||||
"Squirrel": 1,
|
"Squirrel": 1,
|
||||||
"Standard ML": 4,
|
"Standard ML": 5,
|
||||||
"Stata": 7,
|
"Stata": 7,
|
||||||
"Stylus": 1,
|
"Stylus": 1,
|
||||||
"SuperCollider": 1,
|
"SuperCollider": 1,
|
||||||
@@ -67172,5 +67173,5 @@
|
|||||||
"Zephir": 2,
|
"Zephir": 2,
|
||||||
"Zimpl": 1
|
"Zimpl": 1
|
||||||
},
|
},
|
||||||
"md5": "900536b7898278f2fd14fa3a8badf215"
|
"md5": "4754c31a712c5e22354851fd14d4d4fa"
|
||||||
}
|
}
|
||||||
75
samples/Standard ML/Foo.ML
Normal file
75
samples/Standard ML/Foo.ML
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
|
||||||
|
structure LazyBase:> LAZY_BASE =
|
||||||
|
struct
|
||||||
|
type 'a lazy = unit -> 'a
|
||||||
|
|
||||||
|
exception Undefined
|
||||||
|
|
||||||
|
fun delay f = f
|
||||||
|
|
||||||
|
fun force f = f()
|
||||||
|
|
||||||
|
val undefined = fn () => raise Undefined
|
||||||
|
end
|
||||||
|
|
||||||
|
structure LazyMemoBase:> LAZY_BASE =
|
||||||
|
struct
|
||||||
|
|
||||||
|
datatype 'a susp = NotYet of unit -> 'a
|
||||||
|
| Done of 'a
|
||||||
|
|
||||||
|
type 'a lazy = unit -> 'a susp ref
|
||||||
|
|
||||||
|
exception Undefined
|
||||||
|
|
||||||
|
fun delay f =
|
||||||
|
let
|
||||||
|
val r = ref (NotYet f)
|
||||||
|
in
|
||||||
|
fn () => r
|
||||||
|
end
|
||||||
|
|
||||||
|
fun force f =
|
||||||
|
case f() of
|
||||||
|
ref (Done x) => x
|
||||||
|
| r as ref (NotYet f') =>
|
||||||
|
let
|
||||||
|
val a = f'()
|
||||||
|
in
|
||||||
|
r := Done a
|
||||||
|
; a
|
||||||
|
end
|
||||||
|
|
||||||
|
val undefined = fn () => raise Undefined
|
||||||
|
end
|
||||||
|
|
||||||
|
functor LazyFn(B: LAZY_BASE): LAZY' =
|
||||||
|
struct
|
||||||
|
|
||||||
|
open B
|
||||||
|
|
||||||
|
fun inject x = delay (fn () => x)
|
||||||
|
|
||||||
|
fun isUndefined x =
|
||||||
|
(ignore (force x)
|
||||||
|
; false)
|
||||||
|
handle Undefined => true
|
||||||
|
|
||||||
|
fun toString f x = if isUndefined x then "_|_" else f (force x)
|
||||||
|
|
||||||
|
fun eqBy p (x,y) = p(force x,force y)
|
||||||
|
fun eq (x,y) = eqBy op= (x,y)
|
||||||
|
fun compare p (x,y) = p(force x,force y)
|
||||||
|
|
||||||
|
structure Ops =
|
||||||
|
struct
|
||||||
|
val ! = force
|
||||||
|
val ? = inject
|
||||||
|
end
|
||||||
|
|
||||||
|
fun map f x = delay (fn () => f (force x))
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
structure Lazy' = LazyFn(LazyBase)
|
||||||
|
structure LazyMemo = LazyFn(LazyMemoBase)
|
||||||
Reference in New Issue
Block a user