We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

DL

From Esolang
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)
say(abc)
$$$
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.
    • DLI – Interpreter written by author of language in Visual Basic.
    • DLC – Compiler written by author of language.
    • IDE – with syntax highlighting and some Intelli-sense features.