Hashell

From Esolang
Jump to navigation Jump to search

Hashell(pronounced as hash-hell) is a version of Haskell that's "hell" to use. it is a very minimal Haskell subset.

the subset

Hashell permits only these chars: =>\[]().:`-?x_*&

operators

with this subset you can create some operators:

(.).(.) which takes a one-parameter function on the left and a two-parameter function on the right, and yields a new two-parameter function that passes the result of the right-hand function to the left-hand one(cant be used in pure form must be variable)
>>= which is haskell bind operator
(:[]) a function that takes a value and produces the singleton list containing that value
(&&&) takes two functions and makes a tuple updater
(***) takes two functions and makes a tuple-making function out of them
. the same as B from Combinatory logic(lol)

and heres some operators that idk what they do:

>>
:> 

Complexity class

Hashell is universal for SKI combinatory logic:

-- I
xxxx = \x -> x
-- K
xxxx = \x _ -> x
-- S
xxxx = \x xx xxx -> (x xxx) (xx xxx)
-- Y
xxxx = \xx x -> x (xx x)

Note that, since Haskell's type system is still in place, only well-typed expressions can be provided; the Turing bird is not legal. However, a lazy Y combinator is available.