DL
Jump to navigation
Jump to search
DL is an esoteric programming language, created and implemented by User:Disa. DL source files can be compiled to Windows Executable files.
Language overview
DL is an imperative language, statically typed. Example of usage:
Command | Description |
---|---|
say(text)
|
Print text on console output |
Var String @str
|
Declare @str as string variable |
@str = Read()
|
Put console input to @str |
@sum = #1+2
|
Calculate sum of 1 and 2 and write it to @sum |
@str = abc
|
Define value of variable |
For(10)
|
Put to console "abc" 10 times |
@result = Cmp(1,1) Alternative: @result = #1?1
|
@result = true if 1 = 1 |
Examples
Hello, World!
This program prints out the words Hello World!:
DL Start say(Hello World!) DL End
Cat
A cat program writes its input directly to its output.
DL Start Var String @input @input = Read() say(@input) DL End
Fibonacci sequence
DL Start Var Integer @prev1 Var Integer @prev2 Var Integer @val Var Integer @curr Var Integer @step say(Enter n: ) @val = Read() NL() For(@val) say(F(@step) say() = ) If(#@step?0) say(0) NL() @prev2 = 0 ### If(#@step?1) say(1) NL() @prev1 = 0 @prev2 = 1 ### If(#@step>1) @curr = #@prev1+@prev2 say(@curr) NL() @prev1 = @prev2 @prev2 = @curr ### @step = #@step+1 $$$ @curr = Add(@prev1,@prev2) say(F(@val) say() = @curr) DL End
Deadfish interpreter
Command per line.
DL Start Var Integer @x Var String @cmd Var Bool @bool Var Integer @pos Var Integer @tmp2 Tag(@again) @cmd = Read() Tag(@nextcomm) @pos = StrPos(@cmd,i) If(Cmp(@pos,1)) @x = Add(@x,1) ### @pos = StrPos(@cmd,d) If(Cmp(@pos,1)) @x = Sub(@x,1) ### @pos = StrPos(@cmd,s) If(Cmp(@pos,1)) @x = Mul(@x,@x) ### @pos = StrPos(@cmd,o) If(Cmp(@pos,1)) say(@x) NL() ### If(Cmp(@x,-1)) @x = 0 ### If(Cmp(@x,256)) @x = 0 ### @tmp2 = Len(@cmd) @tmp2 = Sub(@tmp2,1) IfNot(Cmp(@tmp2,0)) @cmd = SubStr(@cmd,1,@tmp2) Goto(@nextcomm) ### Goto(@again) DL End
Computational class
DL is probably Turing-complete, meaning that it is in the same computational class as universal Turing machines.
External resources
- User:Disa's DL webpage contains a functions list, N++ language definition and a couple of interesting programs.