diff options
author | Kartik K. Agaram <vc@akkartik.com> | 2015-04-03 12:53:33 -0700 |
---|---|---|
committer | Kartik K. Agaram <vc@akkartik.com> | 2015-04-03 12:53:33 -0700 |
commit | a8007cc4839609a293908423ea37e6fc3a52d1c8 (patch) | |
tree | be77e1e36582500d163bd491aa2d2a5741644a94 /cpp/core.mu | |
parent | 07d35c4af3275b32f4b2e5d870faea67c1ea6285 (diff) | |
download | mu-a8007cc4839609a293908423ea37e6fc3a52d1c8.tar.gz |
1011 - string-equal now working
Diffstat (limited to 'cpp/core.mu')
-rw-r--r-- | cpp/core.mu | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/cpp/core.mu b/cpp/core.mu new file mode 100644 index 00000000..b1fd34d2 --- /dev/null +++ b/cpp/core.mu @@ -0,0 +1,36 @@ +recipe string-equal [ + default-space:address:space <- new location:type, 30:literal + a:address:array:character <- next-ingredient + a-len:integer <- length a:address:array:character/deref + b:address:array:character <- next-ingredient + b-len:integer <- length b:address:array:character/deref + # compare lengths + { + length-equal?:boolean <- equal a-len:integer, b-len:integer + break-if length-equal?:boolean + reply 0:literal + } + # compare each corresponding character + i:integer <- copy 0:literal + { + done?:boolean <- greater-or-equal i:integer, a-len:integer + break-if done?:boolean + a2:character <- index a:address:array:character/deref, i:integer + b2:character <- index b:address:array:character/deref, i:integer + { + chars-match?:boolean <- equal a2:character, b2:character + break-if chars-match?:boolean + reply 0:literal + } + i:integer <- add i:integer, 1:literal + loop + } + reply 1:literal +] + +recipe main [ + default-space:address:space <- new location:type, 30:literal + x:address:array:character <- new [abc] + y:address:array:character <- new [abd] + 3:boolean/raw <- string-equal x:address:array:character, y:address:array:character +] |