Skip to content

A first script

tim-hardcastle edited this page Nov 12, 2023 · 6 revisions

Let's look at an example script. You can find this in the examples folder of Charm as first.ch. It has a command greet, for greeting people, and a function factorial, for finding factorials. If you can read any code in any language, you will find that you can also read this.

cmd

greet :
    get name from Input("What's your name? ")
    post "Hello " + name + "!"

def

factorial(n) :
    n == 0 : 1
    n > 0 : n * factorial n - 1
    else : error "can't take the factorial of a negative number"

We can tell Charm to run it in the REPL:

→ hub run "examples/first.ch"
Starting script 'examples/first.ch' as service '#0'.
#0 →  

Because this particular script doesn't have a main command, it doesn't actually do anything on initialization. Instead it supplies us with a service (automatically named #0 since we didn't name it ourselves) which knows the definitions of greet and factorial:

#0 → greet
What's your name? Marmaduke
Hello Marmaduke!
#0 → factorial 6 
720
#0 → 

Hopefully that's just what you expected it to do. But you may be wondering what exactly is meant by hub run, as we haven't mentioned the hub yet. This will be dealt with on the next page.

Clone this wiki locally