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.