# Haskell 1428 Almost all lowercase characters are used as function names. *P.S.* Are there any game about these kind (2d pointer) esolangs ? They must be very amusing ! import qualified Data.Map as M import System.Environment import Data.Char import System.Random type I=Integer data S=S{p::(I,I),d,e::Int,s::[I],r::S->S,m::M.Map(I,I)Char} a=zip">v<^\\/_|x+-*,%()=:~!?$@&r{}gponi"[q 0,q 1,q 2,q 3, i[1,0,3,2],i[0,3,2,1],i[0,3,2,1],i[2,1,0,3],\s->do x<-randomRIO(0,3);t$s{d=x}, h(+),h(-),h(*),h div,h mod,h$j(<),h$j(>),h$j(==), o(\(x:y)->x:x:y),o tail,t.g.g,\q->t$if s q==[]||head(s q)==0 then g q else q, o(\(x:y:z)->(y:x:z)),o(\(x:y:z:w)->(y:z:x:w)),\q->t$(r q)q, o reverse,o(\s->last s:init s),o(\s->tail s++[head s]), \q->let(i:j:x)=s q in t$q{s=l(b(i,j)q):x}, \q->let(i:j:k:x)=s q in t$q{s=x,m=M.insert(i,j)(n k)(m q)}, y$putChar.n,y$putStr.show,\q->do c<-getChar;t(q{s=l c:(s q)}) ]++[(x,t.c i)|(x,i)<-zip['0'..'9'][0..9]++zip['a'..'f'][10..15]] b p q=maybe ' 'id$M.lookup p(m q) c x q=q{s=x:s q} f(i,j)0=(i,j+1) f(i,j)1=(i+1,j) f(i,j)2=(i,j-1) f(i,j)3=(i-1,j) g q=q{p=f(p q)(d q)} h f=o(\(b:a:k)->f b a:k) i a s=t$s{d=a!!(d s)} j f a b|f a b=1|1<2=0 k=zip[0,1..] l=toInteger.ord n=chr.fromInteger o f q=t$q{s=f(s q)} q x=i[x,x..] t=return u s=M.fromList.foldr1(++)$[map(\(j,x)->((i,j),x))l|(i,l)<-k$map k$lines s] v q=let(x:y)=s q in q{r=w x,s=y} w x q=q{s=x:(s q),r=v} y o q=let(i:x)=s q in o i>>t(q{s=x}) z q=[[[y=<<(maybe t id$lookup x a)q,t()]!!j(==)x ';',y$c(l x)q]!!k,w]!!j elem x"'\"" where k=e q;x=b(p q)q;w=y$q{e=1-k};y=z.g main=z.S(0,0)0 0[]v.u=<<readFile.head=<<getArgs ## An Example Fish Program mm v > v ~>1f+00p v ;v?)+afg00 < #<-- Condition of loop 1 p>>~ 410p v 0vv?)+cfg01 < < #<-- Condition of loop 2 00>~10g00gg'.'=?v~ v #<-- Go this route when +0 vp01+1g01~< # we find a digit. 1g > ^ ^< v < > >~ ; 0 >10g0cg"0"$-+00gg:" "=?^~:"."=?^v ^ pc0+1gc0 n-$"0" ~< ....................... ....................... ......112233........... This program prints ....................... the number on this field. ....................... <------------ ....................... ....................... ....................... .......................