-
Notifications
You must be signed in to change notification settings - Fork 1
/
prologue.gambit
79 lines (65 loc) · 2.87 KB
/
prologue.gambit
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
;; ---------------------------------------------------------------------- ;;
;; FICHIER : prologue.gambit ;;
;; DATE DE CREATION : Mon May 29 09:54:00 1995 ;;
;; DERNIERE MODIFICATION : Mon May 29 09:54:16 1995 ;;
;; ---------------------------------------------------------------------- ;;
;; Copyright (c) 1995 Dominique Boucher ;;
;; ---------------------------------------------------------------------- ;;
;; Gambit-C specific macros ... ;;
;; ---------------------------------------------------------------------- ;;
;; ---------------------------------------------------------------------- ;;
;; ***** DO NOT EDIT BELOW THIS LINE ***** ;;
;; ---------------------------------------------------------------------- ;;
(##define-macro (def-struct name . field-defs)
`(define-structure ,name ,@field-defs))
(define-macro (bind-exit proc . body)
`(call-with-current-continuation
(lambda ,proc
,@body)))
(define-macro (catch-signals thunk)
`(begin
(set! ##user-interrupt
(lambda () (dylan:error "user interrupt ...")))
(with-exception-handler
(lambda (type)
(dylan:error type))
,thunk)))
(define-macro (call/cc proc . body)
`(call-with-current-continuation ,proc))
(define-macro (dylan:string->symbol str)
`(string->symbol
(list->string
(map char-downcase
(string->list ,str)))))
(define-macro (secure-open-input-file str)
`(##open-input-file ,str))
(define-macro (lst? v)
`(let ((v ,v))
(or (null? v) (pair? v))))
(define-macro (main)
`(dylan:repl (command-line)))
;; (define-macro (fix:+ x1 x2) `(##fixnum.+ ,x1 ,x2)) ;;
;; (define-macro (fix:- x1 x2) `(##fixnum.- ,x1 ,x2)) ;;
;; (define-macro (fix:* x1 x2) `(##fixnum.* ,x1 ,x2)) ;;
;; (define-macro (fix:< x1 x2) `(##fixnum.< ,x1 ,x2)) ;;
;; (define-macro (fix:= x1 x2) `(##fixnum.= ,x1 ,x2)) ;;
;; (define-macro (fix->flo x1) `(##flonum.<-fixnum ,x1)) ;;
(define-macro (fix:+ x1 x2) `(+ ,x1 ,x2))
(define-macro (fix:- x1 x2) `(- ,x1 ,x2))
(define-macro (fix:* x1 x2) `(* ,x1 ,x2))
(define-macro (fix:< x1 x2) `(< ,x1 ,x2))
(define-macro (fix:= x1 x2) `(= ,x1 ,x2))
(define-macro (fix->flo x1) `(exact->inexact ,x1))
(define-macro (flo:+ x1 x2) `(##flonum.+ ,x1 ,x2))
(define-macro (flo:- x1 x2) `(##flonum.- ,x1 ,x2))
(define-macro (flo:* x1 x2) `(##flonum.* ,x1 ,x2))
(define-macro (flo:/ x1 x2) `(##flonum./ ,x1 ,x2))
(define-macro (flo:< x1 x2) `(##flonum.< ,x1 ,x2))
(define-macro (flo:= x1 x2) `(##flonum.= ,x1 ,x2))
(declare
; (extended-bindings)
; (standard-bindings)
(safe)
; (block)
)
;; --- Fin du prologue pour Gambit-C ------------------------------------ ;;