ArkScript is
Example: More-or-less game:
# more or less game
(print "More or less game!")
(import "random.arkm")
(import "Math/Arithmetic.ark")
(let number (mod (abs (random)) 10000))
(print number)
(mut value 0)
(mut tries 0)
(mut continue true)
(while continue {
(set value (toNumber (input "Input a numeric value: ")))
(if (< value number)
# then
(print "More!")
# else
(if (= value number)
# then
{ (print "Bingo!") (set continue false) }
# else
(print "Less!")))
(set tries (+ 1 tries))})
(print "You won in" tries "tries")
Embedding in C++
#include <Ark/Ark.hpp>
int main()
{
// A state can be shared by multiple VM ; they can't overwrite it
Ark::State state;
// This will compile the code, but you can also give a file with state.doFile()
state.doString("(let foo (fun (x y) (+ x y 2)))");
// You can register C++ function (only before calling vm.run())
state.loadFunction("cpp_foo", [](std::vector<Ark::Value>& args, Ark::VM* vm) {
return Ark::Value(static_cast<int>(args.size()));
});
Ark::VM vm(state);
vm.run();
auto value = vm.call("foo", 5, 6.0);
// displays 13
std::cout << value << "\n";
return 0;
}
Last modified 13 March 2025