Skip to content

Instantly share code, notes, and snippets.

@okram
Created March 7, 2020 17:22
Show Gist options
  • Save okram/4f1d560c2c7cfa8fed2f10530bdb035a to your computer and use it in GitHub Desktop.
Save okram/4f1d560c2c7cfa8fed2f10530bdb035a to your computer and use it in GitHub Desktop.
~/software/mm-adt/vm/jvm bin/mmadt.sh
_____ _______
/\ | __ |__ __|
_ __ ___ _ __ ___ _____ / \ | | | | | |
| '_ ` _ \| '_ ` _ |_____/ /\ \| | | | | |
| | | | | | | | | | | / ____ \ |__| | | |
|_| |_| |_|_| |_| |_| /_/ \_\____/ |_|
mm-adt.org
mmlang> [=mmkv,'data/mmkv.mm']
==>[=mmkv,'data/mmkv.mm']
mmlang> obj[=mmkv,'data/mmkv.mm']
==>mmkv:['k'->int,'v'->rec['name'->str,'age'->int]]{*}<=obj[=mmkv,'data/mmkv.mm']
mmlang> obj[=mmkv,'data/mmkv.mm'].v[is.age>28].name
==>str{*}<=obj[=mmkv,'data/mmkv.mm'][get,'v'][is,bool{*}<=rec['name'->str,'age'->int]{*}[get,'age'][gt,28]][get,'name']
mmlang> obj[=mmkv,'data/mmkv.mm'].v[is.age>28].name[explain]
==>'
str{*}<=obj[=mmkv,'data/mmkv.mm'][get,'v'][is,bool{*}<=rec['name'->str,'age'->int]{*}[get,'age'][gt,28]][get,'name']
instruction domain range state
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
[=mmkv,'data/mmkv.mm'] obj => mmkv:['k'->int,'v'->rec['name'->str,'age'->int]]{*}
[get,'v'] mmkv:['k'->int,'v'->rec['name'->str,'age'->int]]{*} => rec['name'->str,'age'->int]{*}
[is,bool{*}<=rec['name'->str,'age'->int]{*}[get,'age'][gt,28]] rec['name'->str,'age'->int]{*} => rec['name'->str,'age'->int]{*}
[get,'age'] rec['name'->str,'age'->int]{*} => int{*}
[gt,28] int{*} => bool{*}
[get,'name'] rec['name'->str,'age'->int]{*} => str{*}
'
mmlang> 1[=mmkv,'data/mmkv.mm'].v[is.age>28].name
==>'marko'
==>'stephen'
mmlang>
@okram
Copy link
Author

okram commented Mar 7, 2020

data/mmkv.mm

The first line is the key/value schema.

['k'->int,'v'->rec['name'->str,'age'->int]]
['k'->1,'v'->['name'->'marko','age'->29]]
['k'->2,'v'->['name'->'ryan','age'->25]]
['k'->3,'v'->['name'->'stephen','age'->32]]
['k'->4,'v'->['name'->'kuppitz','age'->23]]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment