jaskell-0.1.0.0: Stack-based concatenative language embedded in Haskell
Copyright(c) Owen Bechtel 2023
LicenseMIT
Maintainerombspring@gmail.com
Stabilityexperimental
Safe HaskellSafe-Inferred
LanguageHaskell2010

Jaskell.Prelude

Description

A standard library for Jaskell. The names of most functions in this module come from the Joy programming language (see here for a list of Joy commands).

Synopsis

Stack manipulation

stack :: Arrow arr => arr s (s, s) Source #

unstack :: Arrow arr => arr (s, t) t Source #

newstack :: Arrow arr => arr a () Source #

pop :: Arrow arr => arr (s, a) s Source #

dup :: Arrow arr => arr (s, a) ((s, a), a) Source #

swap :: Arrow arr => arr ((s, a), b) ((s, b), a) Source #

popd :: Arrow arr => arr ((s, a), b) (s, b) Source #

pop2 :: Arrow arr => arr ((s, a), b) s Source #

dupd :: Arrow arr => arr ((s, a), b) (((s, a), a), b) Source #

dup2 :: Arrow arr => arr ((s, a), b) ((((s, a), b), a), b) Source #

swapd :: Arrow arr => arr (((s, a), b), c) (((s, b), a), c) Source #

rollup :: Arrow arr => arr (((s, a), b), c) (((s, c), a), b) Source #

rolldown :: Arrow arr => arr (((s, a), b), c) (((s, b), c), a) Source #

Ternary operator

choice :: Arrow arr => arr (((s, Bool), a), a) (s, a) Source #

select :: (Arrow arr, Eq a) => arr (((s, a), [(a, b)]), b) (s, b) Source #

Tuples and lists

pair :: Arrow arr => arr ((s, a), b) (s, (a, b)) Source #

unpair :: Arrow arr => arr (s, (a, b)) ((s, a), b) Source #

cons :: Arrow arr => arr ((s, a), [a]) (s, [a]) Source #

swons :: Arrow arr => arr ((s, [a]), a) (s, [a]) Source #

uncons :: Arrow arr => arr (s, [a]) ((s, a), [a]) Source #

unswons :: Arrow arr => arr (s, [a]) ((s, [a]), a) Source #

Basic combinators

conjoin :: (Arrow arr, Arrow arr') => arr ((s, arr' t (u1, Bool)), arr' t (u2, Bool)) (s, arr' t (t, Bool)) Source #

disjoin :: (Arrow arr, Arrow arr') => arr ((s, arr' t (u1, Bool)), arr' t (u2, Bool)) (s, arr' t (t, Bool)) Source #

i :: ArrowApply arr => arr (s, arr s t) t Source #

comp :: (Arrow arr, Arrow arr') => arr ((s, arr' a b), arr' b c) (s, arr' a c) Source #

consQ :: (Arrow arr, Arrow arr') => arr ((s, a), arr' (t, a) c) (s, arr' t c) Source #

swonsQ :: (Arrow arr, Arrow arr') => arr ((s, arr' (t, a) c), a) (s, arr' t c) Source #

nullary :: ArrowApply arr => arr (s, arr s (t, a)) (s, a) Source #

dip :: ArrowApply arr => arr ((s, a), arr s t) (t, a) Source #

dipd :: ArrowApply arr => arr (((s, a), b), arr s t) ((t, a), b) Source #

dipdd :: ArrowApply arr => arr ((((s, a), b), c), arr s t) (((t, a), b), c) Source #

app1 :: ArrowApply arr => arr ((s, a), arr (s, a) (t, b)) (s, b) Source #

app2 :: ArrowApply arr => arr (((s, a), a), arr (s, a) (t, b)) ((s, b), b) Source #

app3 :: ArrowApply arr => arr ((((s, a), a), a), arr (s, a) (t, b)) (((s, b), b), b) Source #

cleave :: ArrowApply arr => arr (((s, a), arr (s, a) (t1, b1)), arr (s, a) (t2, b2)) ((s, b1), b2) Source #

ifte :: ArrowApply arr => arr (((s, arr s (t, Bool)), arr s u), arr s u) u Source #

branch :: ArrowApply arr => arr (((s, Bool), arr s t), arr s t) t Source #

cond :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [(arr s (t, Bool), arr s u)]), arr s u) u Source #

infra :: ArrowApply arr => arr ((s, t), arr t u) (s, u) Source #

Recursive combinators

whiledo :: (ArrowApply arr, ArrowChoice arr) => arr ((s, arr s (t, Bool)), arr s s) s Source #

tailrec :: (ArrowApply arr, ArrowChoice arr) => arr (((s, arr s (t, Bool)), arr s u), arr s s) u Source #

linrec :: (ArrowApply arr, ArrowChoice arr) => arr ((((s, arr s (t, Bool)), arr s u), arr s s), arr u u) u Source #

linrec' :: (ArrowApply arr, ArrowChoice arr) => arr ((((s, arr s (t, Bool)), arr s u), arr s (s, c)), arr (u, c) u) u Source #

binrec :: (ArrowApply arr, ArrowChoice arr) => arr (((((s, a), arr (s, a) (t, Bool)), arr (s, a) (u, b)), arr (s, a) ((s, a), a)), arr ((s, b), b) (u, b)) (u, b) Source #

binrec' :: (ArrowApply arr, ArrowChoice arr) => arr (((((s, a), arr (s, a) (t, Bool)), arr (s, a) (u, b)), arr (s, a) (((s, a), a), c)), arr (((s, b), b), c) (u, b)) (u, b) Source #

natrec :: (ArrowApply arr, ArrowChoice arr) => arr (((s, Int), arr s (t, b)), arr ((s, Int), b) (t, b)) (t, b) Source #

listrec :: (ArrowApply arr, ArrowChoice arr) => arr (((s, [a]), arr s (t, b)), arr ((s, a), b) (t, b)) (t, b) Source #

data CLROption arr s u Source #

Constructors

Stop (arr s u) 
Recurse (arr s s) (arr u u) 

condlinrec :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [(arr s (t, Bool), CLROption arr s u)]), CLROption arr s u) u Source #

times :: (ArrowApply arr, ArrowChoice arr) => arr ((s, Int), arr s s) s Source #

List combinators

step :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [a]), arr (s, a) s) s Source #

step2 :: (ArrowApply arr, ArrowChoice arr) => arr (((s, [a]), [b]), arr ((s, a), b) s) s Source #

map :: Arrow arr => arr ((s, [a]), (s, a) -> (t, b)) (s, [b]) Source #

mapS :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [a]), arr (s, a) (s, b)) (s, [b]) Source #

filter :: Arrow arr => arr ((s, [a]), (s, a) -> (t, Bool)) (s, [a]) Source #

filterS :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [a]), arr (s, a) (s, Bool)) (s, [a]) Source #

split :: Arrow arr => arr ((s, [a]), (s, a) -> (t, Bool)) ((s, [a]), [a]) Source #

splitS :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [a]), arr (s, a) (s, Bool)) ((s, [a]), [a]) Source #

any :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [a]), arr (s, a) (t, Bool)) (s, Bool) Source #

all :: (ArrowApply arr, ArrowChoice arr) => arr ((s, [a]), arr (s, a) (t, Bool)) (s, Bool) Source #

zipwith :: Arrow arr => arr (((s, [a]), [b]), ((s, a), b) -> (t, c)) (s, [c]) Source #

zipwithS :: (ArrowApply arr, ArrowChoice arr) => arr (((s, [a]), [b]), arr ((s, a), b) (s, c)) (s, [c]) Source #