#this is a comment
struct $toto = { var1: string; var2: string list; }
ls -l
It is decided to use this form instead of: ls "-l" this means that -l cannot be considered as a variable.
let $pattern = "*.txt" in find -iname "$pattern"
Variable start by a $.
let $pattern = '"*.txt"' \ find -iname $pattern
let $pattern = '-l -a' \ ls $pattern --color
let $res = ls -l #une commande possède: - un programme appelé - une liste d'arguments - un résultat entier (succés, code d'erreur) - un résultat d'erreur affiché - un résultat standard affiché - un résultat affiché (erreur + standard) struct $cmd = { cmdinstr : string; cmdlist : string list; res : int option; print : string option; print_error : string option; print_std :string option;
ls -l | grep toto
$res | grep toto
let $res = + 5 8 #$res = 13
let $malist = ["-l", "-a", "-b"] // le type de $mavar est string list.
echo $malist[1]
list_lenght $malist
let $malist = list_append $malist "toto"
let $malist = list_rm_last $malist
let $malist = list_prepend $malist "titi"
let $malist = list_rm_first $malist
#Pour modifier une liste:
let $malist = $malist with [_,_,_,_,_,"tata"]
#Qui peut être abrégé:
let $malist = [_,_,_,_,_,"tata"]
#Qui peut être abrégé:
let $malist = [5:"tata"]
#avec les lists il n'est possible de n'insérer ou supprimer qu'en tête ou en fin.
Tous les éléments d'un tableaux doivent être du même type
let $monset = ~ 3 4 7 ~
#add to a set:
let $monset = $monset with ~ 5 ~
set_is_in 5 $monset
let $mamap = ~ 1:3 23:4 3:7 ~
#add to a map:
let $mamap = $mamap with [5:34]
$mamap[1]
let $monset = ~ 3 4 7 ~
let $monset2 = ~ 5 ~ $monset
$monset2
struct $toto = { var1: string; var2: string list; }
let $mavar = $toto{ var1 = "-l -a"; var2 = ["-l", "-a", "-b"] }
#utilisation var1 echo $mavar.var1
#on peut faire une structure "n-uplet": struct $tuple = { : string; : int; }
let $mavar = $tuple{"test", 3}
let $mafun arg1 arg2 = arg1 + arg2
let $mafun arg = ls arg
let $mafun arg = let $tmp = arg in (ls $tmp)
A variable start by a $. A string variable is never computed/transformed A command variable is applied when needed (to apply immediatly, use "let $res = ! (ls -l)" A int operation variable is applied when needed (to apply immediatly, use "let $res = ! (+ 5 8)"
Les scopes: les variables sont définis à l'intérieur de leur "in" sinon, elles sont toplevel.
Un fichier est implicitement un module.