mirror of https://github.com/voidlizard/hbs2
wip, cons, top:stdin
This commit is contained in:
parent
b4f8cd8354
commit
5df971bbac
|
@ -33,6 +33,7 @@ import Data.Kind
|
|||
import Data.List (isPrefixOf)
|
||||
import Data.List qualified as List
|
||||
import Data.Maybe
|
||||
import Data.Either
|
||||
import Data.String
|
||||
import Data.Text.IO qualified as TIO
|
||||
import Data.Text qualified as Text
|
||||
|
@ -966,9 +967,13 @@ internalEntries = do
|
|||
_ -> throwIO (TypeCheckError @C nil)
|
||||
|
||||
entry $ bindMatch "head" $ \case
|
||||
[ ListVal es ] -> pure (head es)
|
||||
[ ListVal es ] -> pure (headDef nil es)
|
||||
_ -> throwIO (TypeCheckError @C nil)
|
||||
|
||||
entry $ bindMatch "cons" $ \case
|
||||
[ e, ListVal es ] -> pure (mkList (e:es))
|
||||
_ -> throwIO (BadFormException @C nil)
|
||||
|
||||
brief "get tail of list"
|
||||
$ args [arg "list" "list"]
|
||||
$ desc "nil if the list is empty; error if not list"
|
||||
|
@ -1140,6 +1145,11 @@ internalEntries = do
|
|||
e@(SymbolVal x) -> wrapWith e
|
||||
_ -> id
|
||||
|
||||
|
||||
entry $ bindMatch "top:stdin" $ const do
|
||||
liftIO TIO.getContents
|
||||
<&> either (const nil) (mkList . fmap fixContext) . parseTop
|
||||
|
||||
brief "parses string as toplevel and produces a form"
|
||||
$ desc "parse:top:string SYMBOL STRING-LIKE"
|
||||
$ entry $ bindMatch "parse:top:string" $ \case
|
||||
|
|
Loading…
Reference in New Issue