2016-05-18 5 views
5

Der Operator cons (::) ist ein grundlegender Teil von 1) Schreiben von rekursiven Listenfunktionen in OCaml und ähnlichen Sprachen und 2) Mustervergleich in Listen. Allerdings kann ich nicht alles in Grunde in der Dokumentation über Nachteile finden, und in der REPL, führt dies auf einen Fehler:Wo ist Reason's Nachteile (: :) Operator?

Reason # let myList = [2, 3, 4]; 
let myList : list int = [2, 3, 4] 
Reason # 1 :: myList; 
Error: Syntax error 

Gibt es einen Ersatz für den Nachteil Operator?

OCaml:

+0

Was ist Grund? Ich habe noch nichts davon gehört und kann bei Google nichts finden. –

+0

http://facebook.github.io/reason/ – jayelm

+0

TIL. Vielen Dank! Ich würde gerne ein Tag-Wiki über die Sprache sehen. –

Antwort

9

Ah, es als die "unveränderliche Liste Append" Operator in Reason list of primitives aliased

1 :: 2 :: myList 
1 :: 2 :: [3, 4, 5] 

Grund:

[1, 2, ...myList] 
[1, 2, ...[3, 4, 5]] 

Merkwürdig ist, dass zumindest in der aktuellen Version (0.0.6) Sie können beide Syntaxen beim Mustervergleich verwenden:

let head = fun lst => switch lst { 
    | [] => failwith "Empty list" 
    | [hd, ...tl] => hd 
}; 

let head = fun lst => switch lst { 
    | [] => failwith "Empty list" 
    | hd::tl => hd 
};