tricu

A lazy functional language based on Tree Calculus
Log | Files | Refs | README | LICENSE

main.tri (865B)


      1 !import arboricx_app as App
      2 !import io as IO
      3 !import handlers as H
      4 !import handler_artifacts as Artifacts
      5 !export main
      6 !export startupAction
      7 !export startupBody
      8 !export storeRoot
      9 !export createRootDirectory
     10 !export initializeStore
     11 !export createView
     12 !export initializeView
     13 
     14 -- Keep the actual application's executable tree, including its scoped startup.
     15 main = App.main
     16 payload (t _ value) = value
     17 payload _ = t
     18 startupAction = payload (payload main)
     19 startupBody = payload startupAction
     20 
     21 -- These are separately materialized views. The startup callback above remains
     22 -- opaque: inspection never applies it to invent an owner or follow its effects.
     23 storeRoot = "./store"
     24 createRootDirectory = IO.createDirectory storeRoot
     25 initializeStore = H.runIO (Artifacts.prepareFilesystem storeRoot)
     26 createView = IO.io createRootDirectory
     27 initializeView = IO.io initializeStore