Skip to content

ianthehenry/janet-module

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

janet-module

This library exports two macros: defmodule and defmodule-.

These allow you to define multiple modules in a single file, and to bring them in scope as if you had imported them. It's a convenient way to namespace symbols without having to put things in separate files.

A simple example:

(use module) (defmodule printer (defn new [] @{:indent 0 :indented false :buf (buffer/new 256)}) (defn indent [t] (repeat (t :indent) (buffer/push-string (t :buf) " ")) (put t :indented true)) (defn newline [t] (buffer/push-byte (t :buf) (chr "\n")) (put t :indented false)) (defn prin [t & things] (unless (t :indented) (indent t)) (each thing things (buffer/push-string (t :buf) thing))) (defn print [t & things] (prin t ;things) (newline t))) (def printer (printer/new)) (printer/print printer "hello")

This is a pretty trivial library but I keep defining this helper over and over.

About

a simple module macro

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages