Hecl

Hecl

The Mobile Scripting Language

Hello World:

A list of simple examples showing what Hecl looks like in action.

puts "Hello, World"

Set a variable, print it out in the midst of a string:

set rating 10
puts "Hecl, from 1 to 10: $rating"

Grouping with braces {}:

puts {The $dollar $signs $are printed	    literally$$ - no substitution}

Utilize the result of a command:

set rating 10
puts "Rating:"
puts [set rating]

Basic math:

puts "2 + 2 = [+ 2 2]"

"if" command:

set temp 10
if { < $temp 0 } {
    puts "It's freezing"
} else {
    puts "Not freezing"
}

"while" loop command:

set i 0
while { < $i 10 } {
    puts "i is now $i"
    incr $i
}

Lists:

set foo [list a b c]
set bar {a b c}
lappend $foo d
lappend $bar d
set foo
# Returns 'a b c d'
set bar
# Returns 'a b c d'

Hash tables:

set foo [hash {a b c d}]
puts [hget $foo a]
# prints 'b'
puts [hget $foo c]
# prints 'd'
hset $foo c 2
puts [hget $foo c]
# prints '2'
puts $foo
# prints 'a b c 2' (although not necessarily in that order)

"foreach" loop command:

set lst {a b c d e f}
foreach {m n} $lst {
    puts  "It is possible to grab two variables at a time: $m $n"
}

foreach {x} $lst {
    puts  "Or one at a time: $x"
}

Create new commands with the "proc" command. In this example we create a command that prints out a numbered list.

set list {red blue green}
proc printvals {vals} {
    set num 1
    foreach v $vals {
	puts "$num - $v"
	incr $num
    }
}

printvals $list

Hecl is very flexible - in this example, we create a "do...while" loop command that works as if it were a native loop construct.

proc do {code while condition} {
    upeval $code
    while { upeval $condition } {
	upeval $code
    }
}

set x 100
set foo ""
do {
    append $foo $x
    incr $x
} while {< $x 10}
set foo
# Returns 100 - because the loop is run once and only once.