summaryrefslogtreecommitdiff
path: root/top/system-init.scm
blob: 4c06cb5d2ca402c0226c65521ad6a505bad26d87 (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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)))