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
|
;; -*-theme-d-*-
;; Copyright (C) 2008-2013 Tommi Höynälänmaa
;; Distributed under GNU General Public License version 3,
;; see file doc/GPL-3.
;; Expected results: translation and running OK
(define-proper-program (tests test15)
(import (standard-library core)
(standard-library console-io))
(define-param-logical-type :triplet (%type1 %type2 %type3)
(:tuple %type1 %type2 %type3))
(define-param-proc-alt reverse-triplet (%type1 %type2 %type3)
(lambda (((arg (:triplet %type1 %type2 %type3)))
(:triplet %type3 %type2 %type1)
pure)
(list
(car (cdr (cdr arg)))
(car (cdr arg))
(car arg))))
(define-param-proc-alt make-triplet (%arglist)
(lambda (((arglist (splice %arglist)))
(:triplet (splice %arglist))
pure)
(reverse-triplet
(list
(car (cdr (cdr arglist)))
(car (cdr arglist))
(car arglist)))))
(define main
(lambda (() <integer> nonpure)
(let ((result
(make-triplet 1 2 3)))
(console-display (car result))
(console-newline)
(console-display (car (cdr result)))
(console-newline)
(console-display (car (cdr (cdr result))))
(console-newline))
0)))
|