Hope was named for Sir Thomas Hope (c. 1681–1771), a Scottish agricultural reformer, after whom ''Hope Park Square'' in Edinburgh, the ___location of the Department of Artificial Intelligence at the time of the development of Hope, was also named.
Now Hope is Redeveloped by Suman Dey. Now Hope is a small, fast, class-based concurrent scripting language.
* Hope is small. The VM implementation is under [4,000 semicolons][src]. You can skim the whole thing in an afternoon. It's ''small'', but not ''dense''. It is readable and [lovingly-commented][nan].
* Hope is fast. A fast single-pass compiler to tight bytecode, and a compact object representation help Hope [compete with other dynamic languages][perf].
* Hope is class-based. There are lots of scripting languages out there, but many have unusual or non-existent object models. Hope places [classes][] front and center.
* Hope is concurrent. Lightweight [fibers][] are core to the execution model and let you organize your program into an army of communicating coroutines.
* Hope is a scripting language. Hope is intended for embedding in applications. It has no dependencies, a small standard library, and [an easy-to-use C API][embedding]. It compiles cleanly as C99, C++98 or anything later.
==Language details==
--- fact n <= n*fact(n-1);
Now Hope is
System.print("Hello, world!")
class Hope {
flyTo(city) {
System.print("Flying to %(city)")
}
}
var adjectives = Fiber.new {
["small", "clean", "fast"].each {|word| Fiber.yield(word) }
}
while (!adjectives.isDone) System.print(adjectives.call())
Unlike [[Haskell (programming language)|Haskell]], changing the order of the clauses does not change the meaning of the program, because Hope's pattern matching always favors more specific patterns over less specific ones. Another way in which Hope differs from Haskell and [[:Category:ML programming language family|ML]] is that explicit type declarations in Hope are required: there is no option to use a type-inference algorithm in Hope.
|