jaskell: Stack-based concatenative language embedded in Haskell
Jaskell is a stack-based programming language implemented using normal Haskell types and functions, along with a quasiquoter that allows for a more elegant syntax than what pure Haskell supports. Since it is embedded in Haskell, Jaskell is purely functional and, unlike other stack-based languages, statically typed. The standard library is based on that of Joy, and the name "Jaskell" is a portmanteau of "Joy" and "Haskell."
A Jaskell program is a sequence of commands. Each command is a function which takes
a stack — represented in Haskell as a left-nested tuple — and returns another stack.
In order to accomodate side effects, commands need not actually be functions; any
arrow is allowed as a command. The two most useful arrow types are (->)
and Kleisli IO
.
Two example programs are shown below. The first program asks for the user's name and then
prints a greeting. The second program defines a qsort
function and then uses it to
sort a list.
{-# LANGUAGE QuasiQuotes #-} import qualified Jaskell import Jaskell.Quote (jsl) import Jaskell.Prelude main :: IO () main = Jaskell.runK [jsl| "What's your name?" !putStrLn [ "Hello, ", ?getLine, "!" ] $concat !putStrLn |] sorted :: ((), [Int]) sorted = Jaskell.run [jsl| DEF small = { $null } { uncons $null } disjoin ; DEF qsort = small { } { uncons { < } split rolldown } { swap cons ++ } binrec' ; [3,5,1,6,4,2] qsort |]
[Skip to Readme]
Downloads
- jaskell-0.1.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
- No Candidates
Versions [RSS] | 0.1.0.0 |
---|---|
Change log | CHANGELOG.md |
Dependencies | base (>=4.13.0.0 && <5), megaparsec (>=9.0.0 && <10), template-haskell (>=2.16.0.0 && <2.21) [details] |
License | MIT |
Author | Owen Bechtel |
Maintainer | ombspring@gmail.com |
Category | Language |
Home page | https://github.com/UnaryPlus/jaskell |
Bug tracker | https://github.com/UnaryPlus/jaskell/issues |
Source repo | head: git clone https://github.com/UnaryPlus/jaskell.git |
Uploaded | by OwenBechtel at 2023-06-27T18:23:22Z |
Distributions | |
Downloads | 619 total (4 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs available [build log] All reported builds failed as of 2023-08-25 [all 1 reports] |