From b6a6eea5d2e38393c940d314363f88d4d779477c Mon Sep 17 00:00:00 2001 From: John David Pressman Date: Mon, 10 Feb 2020 20:51:48 -0800 Subject: [PATCH] Add map reference page to doc tests and fix bugs --- gitlab-pages/docs/reference/map.md | 88 +++++++++++++++++++++++++----- src/test/md_file_tests.ml | 1 + 2 files changed, 74 insertions(+), 15 deletions(-) diff --git a/gitlab-pages/docs/reference/map.md b/gitlab-pages/docs/reference/map.md index 9d764b824..08e1a457f 100644 --- a/gitlab-pages/docs/reference/map.md +++ b/gitlab-pages/docs/reference/map.md @@ -3,6 +3,61 @@ id: map-reference title: Map --- +## Defining A Map Type + + + +```pascaligo +type move is int * int +type moveset is map(address, move) +``` + + +```cameligo +type move = int * int +type moveset = (address, move) map +``` + + +```reasonligo +type move = (int, int); +type moveset = map(address, move); +``` + + + +## Creating A Map + + + + +```pascaligo +const moves: moveset = map + ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address) -> (1, 2); + ("tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN": address) -> (0, 3); +end +``` + + + +```cameligo +let moves: moveset = Map.literal + [ (("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address), (1, 2)) ; + (("tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN": address), (0, 3)) ; + ] +``` + + + +```reasonligo +let moves : moveset = + Map.literal([ + ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address, (1, 2)), + ("tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN": address, (0, 3)), + ]); +``` + + ## Map.find_opt(k: a', m: (a',b') map) : b' option Retrieve the value associated with a particular key. This version returns an option @@ -99,17 +154,20 @@ let updated_map: moveset = Map.update(("tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN": a ```pascaligo -function patch_ (var m: foobar) : foobar is block { - patch m with map [0 -> 5; 1 -> 6; 2 -> 7] +function set_ (var n : int ; var m : map(int, int)) : map(int, int) is block { + m[23] := n ; } with m ``` ```cameligo - +let add (n,m: int * (int, int) map) : foobar = Map.add 23 n m ``` +```reasonligo +let add = (n: int, m: map(int, int)) : foobar => Map.add(23, n, m); +``` @@ -121,19 +179,19 @@ Remove a key and its associated value from the map. ```pascaligo -function rm (var m : foobar) : foobar is block { +function rm (var m : map(int, int)) : map(int, int) is block { remove 42 from map m } with m ``` ```cameligo -let rm (m: foobar) : foobar = Map.remove 42 m +let rm (m: (int, int) map) : (int, int) map = Map.remove 42 m ``` ```reasonligo -let rm = (m: foobar): foobar => Map.remove(42, m); +let rm = (m: map(int, int)): map(int, int) => Map.remove(42, m); ``` @@ -240,16 +298,16 @@ Test whether a particular key `k` exists in a given map `m`. ```pascaligo -function mem (const k: int; const m: foobar) : bool is map_mem(k, m) +function mem (const k: int; const m: map(int, int)) : bool is map_mem(k, m) ``` ```cameligo -let mem (k,m: int * foobar) : bool = Map.mem k m +let mem (k,m: int * (int, int) map) : bool = Map.mem k m ``` ```reasonligo -let mem = (km: (int, foobar)): bool => Map.mem(km[0], km[1]); +let mem = ((k,m): (int, map(int,int))): bool => Map.mem(k, m); ``` @@ -262,16 +320,16 @@ Create an empty map. ```pascaligo -const empty_map : foobar = map end +const empty_map : map(int, int) = map end ``` ```cameligo -let empty_map : foobar = Map.empty +let empty_map : (int, int) map = Map.empty ``` ```reasonligo -let empty_map: foobar = Map.empty; +let empty_map: map(int, int) = Map.empty; ``` @@ -319,16 +377,16 @@ Get the size of a given map `m`. ```pascaligo -function size_ (const m : foobar) : nat is +function size_ (const m : map(int, int)) : nat is block {skip} with (size(m)) ``` ```cameligo -let size_ (m: foobar) : nat = Map.size m +let size_ (m: (int, int) map) : nat = Map.size m ``` ```reasonligo -let size_ = (m: foobar): nat => Map.size(m); +let size_ = (m: map(int, int)): nat => Map.size(m); ``` diff --git a/src/test/md_file_tests.ml b/src/test/md_file_tests.ml index 86aefeb89..a65ba74a5 100644 --- a/src/test/md_file_tests.ml +++ b/src/test/md_file_tests.ml @@ -122,6 +122,7 @@ let md_files = [ "/gitlab-pages/docs/advanced/timestamps-addresses.md"; "/gitlab-pages/docs/api/cli-commands.md"; "/gitlab-pages/docs/api/cheat-sheet.md"; + "/gitlab-pages/docs/reference/map.md"; ] let md_root = "../../gitlab-pages/docs/language-basics/"