Top 1,000 Features Creators Events Podcasts Extensions Blog Explorer CSV Download


< >

Monkey is a programming language created in 2011 by Anthony Diamond.

#581on PLDB 13Years Old 254Repos
Download source code:
git clone

Monkey X is a high-level programming language designed for video game development for many different platforms, including desktop and laptop computers, mobile phones, tablets, and video game consoles. The language itself is an object-oriented dialect of BASIC, which the compiler translates into native source code for several target platforms. The resulting code is then compiled normally. Read more on Wikipedia...

Example from hello-world:
puts("Hello World")
Example from Linguist:
'Showcases use of Lambda functions and Generics. #Import "<std>" Using std.. Function Main() Local testStack := New Stack< MyObject > For Local n := 1 To 20 Local newItem := New MyObject newItem.depth = Rnd( 0, 100 ) testStack.Push( newItem ) Next testStack.Sort( Lambda:Int( x:MyObject,y:MyObject ) Return x.depth<=>y.depth End ) For Local n := Eachin testStack Print( n.depth ) Next End Struct MyObject Field depth := 0 End
Example from Wikipedia:
' The 'Player' class, as referenced previously (Placement does not matter): Class Player ' Declare all of our fields (Class-local variables): ' These two variables will act as our position on the screen. ' (Alternatively, an 'Array or third-party class could be used) Field x:Float, y:Float ' This will be a reference to an 'Image' object we'll specify. Field image:Image ' Constructor(s): ' Overloading 'New' mainly works the same way as constructors in other languages. ' Returning is generally not recommended for constructors. Method New(img:Image, x:Float=100, y:Float=100) ' Due to the arguments using the same names, 'Self' ' is required to resolve our fields' names: Self.image = img Self.x = x Self.y = y End ' Methods: ' This will be our main render-method for this object: Method Draw:Void() ' Draw the 'image' object to the screen using our 'x' and 'y' fields. DrawImage(image, x, y) ' Returning in a 'Void' function is not required. (Some still recommend it) Return End End

Language features

Feature Supported Token Example
MultiLine Comments โœ“
Binary Literals โœ“
' \%[10]+
Integers โœ“
' [0-9]+
Floats โœ“
' [0-9]+\.[0-9]*(?!\.)
Hexadecimals โœ“
' \$[0-9a-fA-Z]+
Strings โœ“ "
"Hello world"
Print() Debugging โœ“ puts
Comments โœ“
' A comment
Line Comments โœ“ '
' A comment
Semantic Indentation X

View source

- Build the next great programming language ยท About ยท Resources ยท Acknowledgements ยท Part of the World Wide Scroll