File: test346.thp

package info (click to toggle)
theme-d 7.2.4-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 21,036 kB
  • sloc: lisp: 9,625; sh: 5,321; makefile: 715; ansic: 477
file content (102 lines) | stat: -rw-r--r-- 3,139 bytes parent folder | download | duplicates (2)
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
;; -*-theme-d-*-

;; Copyright (C) 2015, 2021, 2024 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 test346)


  (import (standard-library core)
	  (standard-library dynamic-list)
	  (standard-library console-io))


  (define-simple-method my-cons (((l (rest <object>))) <object> pure)
    (cons (d-list-ref l 0) (d-list-ref l 1)))


  (define-simple-method my-proc1 (((i <object>)) <object> pure)
    (let ((i-result (+ (cast <integer> i) 1)))
      i-result))


  (define-simple-method my-proc2 (((i <object>)) <object> nonpure)
    (let ((i-result (+ (cast <integer> i) 1)))
      (console-display-line i-result)
      i-result))


  (define-simple-method my-proc3 (((l (rest <object>)))
				<object>
				nonpure)
    (let ((pr-result (cons (d-list-ref l 0) (d-list-ref l 1))))
      (console-display-line pr-result)
      pr-result))


  (define-simple-method my-proc4 (((l (rest <object>)))
				<none>
				nonpure)
    (console-display (d-list-ref l 0))
    (console-display " ")
    (console-display-line (d-list-ref l 1)))


  (define-simple-method my-proc5 (((x1 <object>) (x2 <object>))
				<pair>
				nonpure)
    (let ((pr-result (cons x1 x2)))
      (console-display-line pr-result)
      pr-result))

  
  (define-main-proc (() <none> nonpure)
      (let ((l1 (d-list 1 2 3 4 5))
	    (l2 (d-list 'a 'b 'c 'd 'e))
	    (l3 (d-list "abc" "def"))
	    (l4 (d-list 3.0 4.0 5.0 6.0)))
	(console-display-line "*1*")
	(console-display-line (d-car l1))
	(console-display-line (d-cdr l2))
	(console-display-line (d-list-ref l1 2))
	(console-display-line (d-length l2))
	(console-display-line "*2*")
	(console-display-line (d-map1 my-proc1 l1))
	(console-display-line (d-map-nonpure1 my-proc2 l1))
	(d-for-each1 console-display-line l2)
	(console-display-line (d-map2 cons l1 l2))
	(console-display-line (d-map-nonpure2 my-proc5 l1 l2))
	(console-display-line (d-map my-cons l1 l2))
	(console-display-line (d-map-nonpure my-proc3 l1 l2))
	(d-for-each my-proc4 l1 l2)
	(d-for-each2 my-proc4 l1 l2)
	(console-display-line "*3*")
	(console-display-line (d-append l1 l2))
	(console-display-line (d-append l1 l2 l3 l4))
	(console-display-line (d-take l1 2))
	(console-display-line (d-take-right l2 3))
	(console-display-line (d-drop l1 2))
	(console-display-line (d-drop-right l2 3))
	(console-display-line (d-reverse l1))
    (console-display-line
     (d-fold1 (lambda (((x1 <object>) (x2 <object>)) <object> pure)
                (+ (cast <integer> x1) (cast <integer> x2)))
              0
              l1))
    (console-display-line
     (d-fold-right1 cons (cast <object> null) l1))
	(console-display-line (list? l1))
	(console-display-line (list? '(1 . 2)))
	(console-display-line "*4*")
	(console-display-line (d-caar '((1 2) (3 4))))
	(console-display-line (d-cadr '((1 2) (3 4))))
	(console-display-line (d-cdar '((1 2) (3 4))))
	(console-display-line (d-cddr '((1 2) (3 4))))
	(console-display-line (d-caddr l1))
	(console-display-line (d-cdddr l1))
	(console-display-line (d-cadddr l1)))))