summaryrefslogtreecommitdiff
path: root/top/system-init.scm
diff options
context:
space:
mode:
Diffstat (limited to 'top/system-init.scm')
-rw-r--r--top/system-init.scm41
1 files changed, 41 insertions, 0 deletions
diff --git a/top/system-init.scm b/top/system-init.scm
new file mode 100644
index 0000000..4c06cb5
--- /dev/null
+++ b/top/system-init.scm
@@ -0,0 +1,41 @@
+
+(define (initialize-haskell-system)
+ (when (not *haskell-initialized?*)
+ (initialize-haskell-system/forced))
+ 'haskell-ready)
+
+(predefine (**tycon/def def args)) ; in util/constructors.scm
+(predefine (init-cse-structs)) ; in csys/dump-cse.scm
+
+(define (initialize-haskell-system/forced)
+ (setf *haskell-initialized?* '#t)
+ (setf *error-output-port* (current-output-port))
+ (init-core-symbols)
+ (init-tuples)
+ (setf *standard-module-default*
+ (make default-decl
+ (types (list
+ (**tycon/def (core-symbol "Int") '())
+ (**tycon/def (core-symbol "Double") '())))))
+ (setf *undefined-def*
+ (make def
+ (name '*undefined*)
+ (unit '*undefined*)
+ (module '*undefined*)))
+ (setf *printer-class*
+ (make class
+ (name '|Printers|)
+ (module '|*Core|) (unit '|*Core|)))
+ (init-cse-structs))
+
+;;; This should be called in the system restart code generated by a
+;;; disk save
+
+(define (load-init-files)
+ (load-init-file "$HASKELL/.yhaskell")
+ (load-init-file "~/.yhaskell"))
+
+(define (load-init-file name)
+ (when (file-exists? name)
+ (load name)))
+