hawk :: the manx machine
by the power vested in me
by nobody in particular
%hawk
a programmable interface
is hereby released.
|% :: sur/hawk ............. ~~
:: ::
+$ land (axal soil) ::namespace
+$ soil ::html app
$: ::
code=@t ::evals to data
data=manx ::document body
:::: ::
name=(unit @t) ::doc title
date=(unit @da) ::changeable
tags=(set rule) ::for filters
peek=(set rule) ::for auth
poke=(set rule) ::for auth
case=@ ::revision
:::: ::
ouch=(unit tang) ::rain failed
boom=(unit (pair @t tang)) ::
== ::
:: ..:...:.. ::
:: . :: :. . ::
:: ..::..:. ::. :: ::. ::
:: ::: :. :: .: :: ::
:: . :. :. :: ::
:: .::..:::.::. .::. ::
:: : ::.. .: .::.: ::
+$ bowl :: :: : ::
$: :::: ::
now=@da :: time
our=@p ::: ::: ::: host
src=@p :::::::::::: guest
eny=@ :::::::::: entropy
=land :::::: ~ tree
== ::
:: ::args for rain
+$ drop (pair term (map @t @t))::
:: ::
+$ cast (map term (set ship)) ::
+$ rule $%(who tag) ::
+$ who [%who ship] ::
+$ tag [%tag term] ::
:: ::
-- :: sur/hawk ............. ~~
app/hawk/hoon
the hawk namespace has one layer.
it's NOT referentially transparent.
in other words: it's a toy.
the hawk namespace
maps directly to the
url namespace
beneath example.com/~~/
it is shrub-ish, but not shrubbery.
the data $manx is both:
- the ui of the app
- the data of the app
a soil's code resolves to a new
data $manx. it is compiled with
a subject containing:
;: slop
!>(drop=drop) :: the command
!>(sol=sol) :: current soil
!>(man=man) :: data.sol
!>(bowl=bowl) :: extra data
!>(land=land) :: subtree
!>(hawk=hawk) :: sur/hawk
!>(mx=mx:html-utils)
!>(..zuse)
==
the code compiles and overwrites
the data $manx whenever a child
changes or the user interacts with
you app via some form.
encode app logic by having the code
respond differently to different
types of $drops.
this sail form...
;form
=method "post"
=action "?p=add"
;input(name "a");
;input(name "b");
==
will create a $drop like
[%add ~[['a' '...'] ['b' '...']]]
the auth sets: peek.soil & poke.soil
apply to
ames peeks/pokes
&
http get/post reqs (via eauth).
there are 5 reserved auth tags:
- %public
- %galaxies
- %stars
- %planets
- %moons
===================================
install from
~dister-migrev-dolseg/hawk