nendo 0.3.3 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
data/lib/init.nnd CHANGED
@@ -37,25 +37,39 @@
37
37
  ;; ----------------------------------------
38
38
  ;; define
39
39
  ;; ----------------------------------------
40
- (define define
41
- (macro (arg . body)
42
- (if (not (pair? arg))
43
- ;; (define var body)
44
- (cons 'define
45
- (cons arg
46
- body))
47
- ;; (define (func arg...) body)
48
- (begin
49
- (if (pair? (cdr arg))
50
- (if (pair? (car (cdr arg)))
51
- (error "Error: define syntax error.")))
52
- (cons 'define
53
- (cons (car arg)
54
- (list
55
- (cons 'lambda
56
- (cons (cdr arg)
57
- body)))))))))
40
+ (define %expand-define-form-lambda
41
+ (lambda (arg body-list)
42
+ ;; (define (func arg...) body)
43
+ (if (pair? (cdr arg))
44
+ (if (pair? (car (cdr arg)))
45
+ (error "Error: define syntax error.")))
46
+ (cons 'define
47
+ (cons (car arg)
48
+ (list
49
+ (cons 'lambda
50
+ (cons (cdr arg)
51
+ body-list)))))))
58
52
 
53
+ (define define
54
+ (macro (arg . body)
55
+ (if (not (pair? arg))
56
+ ;; (define var body)
57
+ (cons 'define
58
+ (cons arg
59
+ body))
60
+ (%expand-define-form-lambda arg body))))
61
+
62
+ (define %expand-define-form
63
+ (lambda (arg-and-body)
64
+ (let ((arg (car arg-and-body))
65
+ (body (cdr arg-and-body)))
66
+ ;; (define (func arg...) body)
67
+ (if (not (pair? arg))
68
+ ;; (define var body)
69
+ (cons 'define
70
+ (cons arg
71
+ body))
72
+ (%expand-define-form-lambda arg body)))))
59
73
 
60
74
  ;; debug-print macro is predefined as NOP.
61
75
  ;; for self debugging of init.nnd.
@@ -113,10 +127,7 @@
113
127
  ;; Utility functions
114
128
  ;; ----------------------------------------
115
129
  (define (vector . lst) (to-arr lst))
116
- (define (list? arg)
117
- (if (pair? arg)
118
- (list? (cdr arg))
119
- (null? arg)))
130
+ (define list? %list?)
120
131
  (define (even? n) (= (% n 2) 0))
121
132
  (define (odd? n) (not (= (% n 2) 0)))
122
133
  (define (zero? n) (= n 0))
@@ -362,6 +373,12 @@
362
373
  ;; don't touch
363
374
  `(let ,@lst))))
364
375
 
376
+ (define if-let1
377
+ (macro (var _expr _then . _else)
378
+ `(let1 ,var ,_expr
379
+ (if ,var ,_then ,@_else))))
380
+
381
+
365
382
  ;; ----------------------------------------
366
383
  ;; errorf
367
384
  ;; ----------------------------------------
@@ -370,6 +387,24 @@
370
387
  `(error
371
388
  (sprintf ,format ,@args))))
372
389
 
390
+
391
+ ;; ----------------------------------------
392
+ ;; optional argument parser
393
+ ;; ----------------------------------------
394
+ (define get-optional
395
+ (macro (restarg default)
396
+ (let1 _restarg (gensym)
397
+ `(let1 ,_restarg ,restarg
398
+ (if (null? ,_restarg)
399
+ ,default
400
+ (car ,_restarg))))))
401
+
402
+ ;; pending
403
+ (define check-arg
404
+ (macro (a b . c)
405
+ `(begin)))
406
+
407
+
373
408
  ;; ----------------------------------------
374
409
  ;; List utilities imported from TinyScheme
375
410
  ;; ----------------------------------------
@@ -469,9 +504,9 @@
469
504
  (append cdrs (list cdr1))))))
470
505
 
471
506
 
472
- (define (map proc . lists)
507
+ (define (%map proc . lists)
473
508
  (letrec ((result '())
474
- (map-arg1
509
+ (%map-arg1
475
510
  (lambda (proc lst)
476
511
  (if (null? lst)
477
512
  #t
@@ -479,12 +514,12 @@
479
514
  (set! result
480
515
  (cons (proc (car lst))
481
516
  result))
482
- (map-arg1 proc (cdr lst)))))))
517
+ (%map-arg1 proc (cdr lst)))))))
483
518
  (cond
484
519
  ((null? lists)
485
520
  (apply proc))
486
521
  ((eq? 1 (length lists))
487
- (map-arg1 proc (car lists)) ;; tail call optimization version
522
+ (%map-arg1 proc (car lists)) ;; tail call optimization version
488
523
  (reverse result))
489
524
  (else
490
525
  (if (null? (car lists))
@@ -495,21 +530,61 @@
495
530
  (cons (apply proc cars)
496
531
  (if (null? cdrs)
497
532
  '()
498
- (apply map (cons proc cdrs)))))))))))
533
+ (apply %map (cons proc cdrs)))))))))))
534
+
535
+ (define (%internal-define-to-letrec _sym _src)
536
+ (if (not (list? (cadr _src)))
537
+ `(,_sym ,@_src)
538
+ (let ((body (cdr _src))
539
+ (defs '())
540
+ (rest '()))
541
+ (if (not (list? (car body)))
542
+ `(,_sym ,@_src)
543
+ (begin
544
+ (%map
545
+ (lambda (x)
546
+ (if (and (pair? x)
547
+ (eq? 'define (car x)))
548
+ (set! defs (cons (%expand-define-form (cdr x)) defs))
549
+ (set! rest (cons x rest))))
550
+ body)
551
+ (let ((defs (reverse defs))
552
+ (rest (reverse rest)))
553
+ (if (< 0 (length defs))
554
+ `(,_sym
555
+ ,(car _src)
556
+ (letrec
557
+ ,(%map
558
+ (lambda (x)
559
+ (list
560
+ (cadr x)
561
+ (caddr x)))
562
+ defs)
563
+ ,@rest))
564
+ ;; found no `internal-define' syntax
565
+ `(,_sym ,@_src))))))))
566
+
499
567
 
568
+ (define lambda
569
+ (macro src
570
+ (%internal-define-to-letrec 'lambda src)))
500
571
 
501
- (define (for-each proc . lists)
502
- (define (for-each-arg1 proc lst)
572
+ (define macro
573
+ (macro src
574
+ (%internal-define-to-letrec 'macro src)))
575
+
576
+ (define (%for-each proc . lists)
577
+ (define (%for-each-arg1 proc lst)
503
578
  (if (null? lst)
504
579
  #t
505
580
  (begin
506
581
  (proc (car lst))
507
- (for-each-arg1 proc (cdr lst)))))
582
+ (%for-each-arg1 proc (cdr lst)))))
508
583
  (cond
509
584
  ((null? lists)
510
585
  (apply proc))
511
586
  ((eq? 1 (length lists))
512
- (for-each-arg1 proc (car lists))) ;; tail call optimization version
587
+ (%for-each-arg1 proc (car lists))) ;; tail call optimization version
513
588
  (else
514
589
  (if (null? (car lists))
515
590
  #t
@@ -519,73 +594,47 @@
519
594
  (apply proc cars)
520
595
  (if (null? cdrs)
521
596
  '()
522
- (apply for-each (cons proc cdrs)))))))))
523
-
524
-
525
- (define (filter pred lst)
526
- (if (null? lst)
527
- '()
528
- (if (pred (car lst))
529
- (cons
530
- (car lst)
531
- (filter pred (cdr lst)))
532
- (filter pred (cdr lst)))))
597
+ (apply %for-each (cons proc cdrs)))))))))
533
598
 
599
+ (define (%filter pred lst)
600
+ (define result '())
601
+ (define (%filter-arg1 proc lst)
602
+ (if (null? lst)
603
+ '()
604
+ (let1 v (proc (car lst))
605
+ (when v
606
+ (set! result (cons (car lst) result)))
607
+ (%filter-arg1 proc (cdr lst)))))
608
+
609
+ (%filter-arg1 pred lst) ;; tail call optimization version
610
+ (reverse result))
611
+
612
+ (define (%filter-map pred lst)
613
+ (define result '())
614
+ (define (%filter-map-arg1 proc lst)
615
+ (if (null? lst)
616
+ '()
617
+ (let1 v (proc (car lst))
618
+ (when v
619
+ (set! result (cons v result)))
620
+ (%filter-map-arg1 proc (cdr lst)))))
534
621
 
535
- (define (filter-map pred lst)
536
- (if (null? lst)
537
- '()
538
- (let1 result (pred (car lst))
539
- (if result
540
- (cons
541
- result
542
- (filter-map pred (cdr lst)))
543
- (filter-map pred (cdr lst))))))
622
+ (%filter-map-arg1 pred lst) ;; tail call optimization version
623
+ (reverse result))
544
624
 
545
625
 
546
626
  (define (find pred lst)
547
- (let1 result (filter pred lst)
627
+ (let1 result (%filter pred lst)
548
628
  (if (null? result)
549
629
  #f
550
630
  (car result))))
551
631
 
632
+ (define map %map)
633
+ (define for-each %for-each)
634
+ (define filter %filter)
635
+ (define filter-map %filter-map)
636
+
552
637
 
553
- (define lambda
554
- (macro src
555
- (if (not (list? (cadr src)))
556
- `(lambda ,@src)
557
- (let1 body (cdr src)
558
- (if (not (list? (car body)))
559
- `(lambda ,@src)
560
- (let ((defs
561
- (filter
562
- (lambda (x)
563
- (if (pair? x)
564
- (and (eq? 'define (car x))
565
- (symbol? (cadr x)))
566
- #f))
567
- body))
568
- (rest
569
- (filter
570
- (lambda (x)
571
- (if (pair? x)
572
- (not (and (eq? 'define (car x))
573
- (symbol? (cadr x))))
574
- #f))
575
- body)))
576
- (if (< 0 (length defs))
577
- `(lambda
578
- ,(car src)
579
- (letrec
580
- ,(map
581
- (lambda (x)
582
- (list
583
- (cadr x)
584
- (caddr x)))
585
- defs)
586
- ,@rest))
587
- ;; found no `internal-define' syntax
588
- `(lambda ,@src))))))))
589
638
 
590
639
 
591
640
  ;; ----------------------------------------
@@ -593,54 +642,50 @@
593
642
  ;; ----------------------------------------
594
643
  (define case
595
644
  (macro (cond-exp . body)
596
- (letrec ((case-block
597
- (lambda (val . elem)
598
- (let1 block (car elem)
599
- (let ((cond-vals (car block))
600
- (body (cdr block)))
601
- (let1 v
602
- (if (eq? 'else cond-vals)
603
- cond-vals
604
- (cons 'or
605
- (map
606
- (lambda (x)
607
- `(eqv? ,x ,val))
608
- cond-vals)))
609
- `((,v
610
- ,@body)))))))
611
-
612
- (case-iter
613
- (lambda (val lst)
614
- (cond
615
- ((eq? 0 (length lst))
616
- '())
617
- ((eq? 1 (length lst))
618
- (case-block val (car lst)))
645
+ (define (case-block val . elem)
646
+ (let1 block (car elem)
647
+ (let ((cond-vals (car block))
648
+ (body (cdr block)))
649
+ (let1 v
650
+ (if (eq? 'else cond-vals)
651
+ cond-vals
652
+ (cons 'or
653
+ (map
654
+ (lambda (x)
655
+ `(eqv? ,x ,val))
656
+ cond-vals)))
657
+ `((,v
658
+ ,@body))))))
659
+
660
+ (define (case-iter val lst)
661
+ (cond
662
+ ((eq? 0 (length lst))
663
+ '())
664
+ ((eq? 1 (length lst))
665
+ (case-block val (car lst)))
619
666
  (else
620
667
  (append (case-block val (car lst))
621
- (case-iter val (cdr lst))))))))
668
+ (case-iter val (cdr lst))))))
622
669
 
623
- (let1 sym (gensym)
624
- `(let1 ,sym ,cond-exp
625
- (cond
626
- ,@(case-iter sym body)))))))
670
+ (let1 sym (gensym)
671
+ `(let1 ,sym ,cond-exp
672
+ (cond
673
+ ,@(case-iter sym body))))))
627
674
 
628
675
 
629
676
  (define let*
630
677
  (macro (exps . body)
631
- (letrec ((let*-expand
632
- (lambda (rest body)
633
- (case (length rest)
634
- ((0)
635
- '())
636
- ((1)
637
- `(let (,(car rest))
638
- ,@body))
639
- (else
640
- `(let (,(car rest))
641
- ,(let*-expand (cdr rest) body)))))))
642
-
643
- (let*-expand exps body))))
678
+ (define (let*-expand rest body)
679
+ (case (length rest)
680
+ ((0)
681
+ '())
682
+ ((1)
683
+ `(let (,(car rest))
684
+ ,@body))
685
+ (else
686
+ `(let (,(car rest))
687
+ ,(let*-expand (cdr rest) body)))))
688
+ (let*-expand exps body)))
644
689
 
645
690
 
646
691
  (define begin0
@@ -711,36 +756,30 @@
711
756
  ;; ----------------------------------------
712
757
  (define dot-operator
713
758
  (macro lst
714
- (letrec ((generate-method-call-form
715
- (lambda (lst)
716
- (let1 tmp (gensym)
717
- (if (symbol? (first lst))
718
- `(,(string->symbol (+ (to-s (first lst)) "." (to-s (second lst))))
719
- ,@(cddr lst))
720
- `(let ((,tmp ,(first lst)))
721
- (,(string->symbol (+ (to-s tmp) "." (to-s (second lst))))
722
- ,@(cddr lst))))))))
723
- (cond
724
- ((> 2 (length lst))
725
- (raise ArgumentError ". dot-operator requires 2+ arguments." (sprintf "%s:%s in dot-operator" (*FILE*) (*LINE*))))
726
- (else
727
- (if (symbol? (second lst))
728
- (generate-method-call-form lst)
729
- (raise TypeError ". dot-operator requires method name as symbol." (sprintf "%s:%s in dot-operator" (*FILE*) (*LINE*)))))))))
759
+ (define (generate-method-call-form lst)
760
+ (let1 tmp (gensym)
761
+ (if (symbol? (first lst))
762
+ `(,(string->symbol (+ (to-s (first lst)) "." (to-s (second lst))))
763
+ ,@(cddr lst))
764
+ `(let ((,tmp ,(first lst)))
765
+ (,(string->symbol (+ (to-s tmp) "." (to-s (second lst))))
766
+ ,@(cddr lst))))))
767
+ (cond
768
+ ((> 2 (length lst))
769
+ (raise ArgumentError ". dot-operator requires 2+ arguments." (sprintf "%s:%s in dot-operator" (*FILE*) (*LINE*))))
770
+ (else
771
+ (if (symbol? (second lst))
772
+ (generate-method-call-form lst)
773
+ (raise TypeError ". dot-operator requires method name as symbol." (sprintf "%s:%s in dot-operator" (*FILE*) (*LINE*))))))))
730
774
 
731
775
 
732
776
  (define (with-open filename pred . lst)
733
- (let1 len (length lst)
734
- (let1 f (cond
735
- ((= 0 len)
736
- (.open filename))
737
- ((< 0 len)
738
- (.open filename (car lst)))
739
- (else
740
- (error "with-open requires 2 or 3 arguments.")))
741
- (let1 result (pred f)
742
- (f.close)
743
- result))))
777
+ (let1 opt (get-optional lst #f)
778
+ (if (< 1 (length lst))
779
+ (error "with-open requires 2 or 3 arguments.")
780
+ (if opt
781
+ (.open filename opt (&block (f) (pred f)))
782
+ (.open filename (&block (f) (pred f)))))))
744
783
 
745
784
 
746
785
  ;; ----------------------------------------
@@ -775,15 +814,10 @@
775
814
  (let1 h (make-hash-table)
776
815
  (for-each
777
816
  (lambda (entry)
778
- (if (pair? (cdr entry))
779
- (hash-table-put! h (car entry) (cadr entry))
780
- (hash-table-put! h (car entry) (cdr entry))))
817
+ (hash-table-put! h (car entry) (cdr entry)))
781
818
  kv-list)
782
819
  h))
783
820
 
784
- (define (hash-table-exist? h key)
785
- (h.has_key? key))
786
-
787
821
  (define (hash-table-clear! h)
788
822
  (h.clear))
789
823
 
@@ -820,7 +854,7 @@
820
854
  keys))))
821
855
 
822
856
  (define (alist->hash-table alist)
823
- (if (not (list? alist))
857
+ (if (not (%list? alist))
824
858
  (error "Error: alist->hash-table expects alist.")
825
859
  (apply hash-table alist)))
826
860
 
@@ -828,10 +862,10 @@
828
862
  ;; ----------------------------------------
829
863
  ;; Ruby interop librarys
830
864
  ;; ----------------------------------------
831
- ;; I will implement in the future...
832
- (define export
833
- (macro (name)
834
- `(define ,name nil)))
865
+ ;; export Nendo's function to the Ruby world
866
+ (define export-to-ruby
867
+ (macro (funcname)
868
+ `(%export-to-ruby ,funcname.to_s ,funcname)))
835
869
 
836
870
  (define (load-library name)
837
871
  (let* ((home (get-nendo-home))
@@ -844,6 +878,20 @@
844
878
  (else
845
879
  (errorf "Error: can't load library file [%s]\n" path )))))
846
880
 
881
+ ;; use macro like Gauche
882
+ (define use
883
+ (macro (sym)
884
+ (if (symbol? sym)
885
+ (let*
886
+ ((str (symbol->string sym))
887
+ (pathname (str.gsub "." "/")))
888
+ `(load-library ,pathname))
889
+ (errorf "Error: use macro requires a symbol argument."))))
890
+
891
+ ;; exporting a symbol in the module. (I will implement in the future...)
892
+ (define export
893
+ (macro (name)
894
+ `(define ,name nil)))
847
895
 
848
896
 
849
897
  ;; ----------------------------------------
@@ -929,50 +977,111 @@
929
977
  ;; http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3APrettyPrint
930
978
  ;;
931
979
  ;; Subsequently modified for initialize library for nendo: Kiyoka Nishiyama
932
- (define (pretty-print s)
933
- (define (do-indent level)
934
- (for-each (lambda (x) (display " ")) (range level)))
935
- (define (pp-parenl)
936
- (display "("))
937
- (define (pp-parenr)
938
- (display ")"))
939
- (define (pp-atom e prefix)
940
- (when prefix (display " "))
941
- (write e))
942
- (define (pp-list s level prefix)
943
- (and prefix (do-indent level))
944
- (pp-parenl)
980
+ (define (pretty-print s . f)
981
+ (define (do-indent f level)
982
+ (for-each (lambda (x) (f.print " ")) (range level)))
983
+ (define (pp-parenl f)
984
+ (f.print "("))
985
+ (define (pp-parenr f)
986
+ (f.print ")"))
987
+ (define (pp-atom f e prefix)
988
+ (when prefix (f.print " "))
989
+ (f.print (write-to-string e)))
990
+ (define (pp-list f s level prefix)
991
+ (and prefix (do-indent f level))
992
+ (pp-parenl f)
945
993
  (let loop ((s s)
946
994
  (prefix #f))
947
995
  (if (null? s)
948
- (pp-parenr)
996
+ (pp-parenr f)
949
997
  (let1 e (car s)
950
998
  (if (list? e)
951
- (begin (and prefix (newline))
952
- (pp-list e (+ level 1) prefix))
953
- (pp-atom e prefix))
999
+ (begin (and prefix (f.print "\n"))
1000
+ (pp-list f e (+ level 1) prefix))
1001
+ (pp-atom f e prefix))
954
1002
  (loop (cdr s) #t)))))
955
- (if (list? s)
956
- (pp-list s 0 #f)
957
- (write s))
958
- (newline))
1003
+ (let1 f (get-optional f STDOUT)
1004
+ (if (list? s)
1005
+ (pp-list f s 0 #f)
1006
+ (f.print (write-to-string s)))
1007
+ (f.print "\n")))
1008
+
959
1009
 
1010
+ (define (pretty-print-to-string s)
1011
+ (let1 io (StringIO.new)
1012
+ (pretty-print s io)
1013
+ (io.rewind)
1014
+ (io.read)))
960
1015
 
961
1016
  ;; ----------------------------------------
962
- ;; optional argument parser
1017
+ ;; sort library functions
963
1018
  ;; ----------------------------------------
964
- (define get-optional
965
- (macro (restarg default)
966
- (let1 _restarg (gensym)
967
- `(let1 ,_restarg ,restarg
968
- (if (null? ,_restarg)
969
- ,default
970
- (car ,_restarg))))))
1019
+ (define (sort lst . cmpfn)
1020
+ (if (null? lst)
1021
+ '()
1022
+ (let1 cmpfn (get-optional cmpfn #f)
1023
+ (to-list
1024
+ (if cmpfn
1025
+ (lst.to_arr.sort (&block (a b) (cmpfn a b)))
1026
+ (lst.to_arr.sort))))))
1027
+
1028
+
1029
+ (define (sort-by lst keyfn)
1030
+ (if (null? lst)
1031
+ '()
1032
+ (to-list
1033
+ (lst.to_arr.sort_by (&block (item) (keyfn item))))))
1034
+
1035
+
1036
+ ;; ----------------------------------------
1037
+ ;; string library
1038
+ ;; ----------------------------------------
1039
+ (define (string-length str) (str.size))
1040
+
1041
+
1042
+ ;; ----------------------------------------
1043
+ ;; regexp library functions
1044
+ ;; ----------------------------------------
1045
+ (define (string->regexp str . casefold)
1046
+ (if (not (str.is_a? String))
1047
+ (error "Error: string->regexp requires a String argument.")
1048
+ (if (get-optional casefold #f)
1049
+ (Regexp.new str Regexp::IGNORECASE)
1050
+ (Regexp.new str))))
1051
+
1052
+ (define (regexp? obj)
1053
+ (obj.is_a? Regexp))
1054
+
1055
+ (define (regexp->string regexp)
1056
+ (regexp.source))
1057
+
1058
+ ;; return: Ruby's MatchData instance
1059
+ (define (rxmatch regexp str)
1060
+ (let1 m (regexp.match str)
1061
+ (if m m #f)))
1062
+
1063
+ (define (rxmatch-start match . index)
1064
+ (let1 index (get-optional index 0)
1065
+ (match.begin index)))
1066
+
1067
+ (define (rxmatch-end match . index)
1068
+ (let1 index (get-optional index 0)
1069
+ (match.end index)))
1070
+
1071
+ (define (rxmatch-substring match . index)
1072
+ (let1 index (get-optional index 0)
1073
+ (nth index (match.to_a.to_list))))
1074
+
1075
+ (define (rxmatch-num-matches match)
1076
+ (match.size))
1077
+
1078
+ (define (rxmatch->string regexp str . index)
1079
+ (let1 index (get-optional index 0)
1080
+ (let1 m (rxmatch regexp str)
1081
+ (if m
1082
+ (rxmatch-substring m index)
1083
+ #f))))
971
1084
 
972
- ;; pending
973
- (define check-arg
974
- (macro (a b . c)
975
- `(begin)))
976
1085
 
977
1086
  ;; ----------------------------------------
978
1087
  ;; global variables bind checker
@@ -987,6 +1096,29 @@
987
1096
  ;; ----------------------------------------
988
1097
  ;; Nendo compiler utility
989
1098
  ;; ----------------------------------------
1099
+ (define (disasm varname . opt)
1100
+ (let ((kind (get-optional opt 'compiled))
1101
+ (alist (get-source-info (varname.to_s))))
1102
+ (cond
1103
+ ((eqv? kind 'compiled)
1104
+ (assv-ref "compiled_str" alist))
1105
+ ((eqv? kind 'source)
1106
+ (assv-ref "source" alist))
1107
+ ((eqv? kind 'expanded)
1108
+ (assv-ref "expanded" alist))
1109
+ ((eqv? kind 'info)
1110
+ (string-join
1111
+ (list
1112
+ (sprintf " file: %s \n" (assv-ref "sourcefile" alist))
1113
+ (sprintf " lineno: %s \n" (assv-ref "lineno" alist))
1114
+ (sprintf " source: \n" )
1115
+ (pretty-print-to-string
1116
+ (assv-ref "source" alist))
1117
+ (sprintf " expanded: \n" )
1118
+ (pretty-print-to-string
1119
+ (assv-ref "expanded" alist))))))))
1120
+
1121
+
990
1122
  (define (compiled-code-string compiled-code filename)
991
1123
  (define (compiled-body-string string-list filename)
992
1124
  (+
@@ -1029,7 +1161,7 @@
1029
1161
  "core.loadInitFile()"
1030
1162
  "core.setArgv( ARGV )"
1031
1163
  "core.load_compiled_code_from_string( " ,(write-to-string str) " ) "
1032
- "core.replStr( \"(if (and (global-defined? 'main) (procedure? main)) (main *argv*) #f) \" )"
1164
+ "core.evalStr( \"(if (and (global-defined? 'main) (procedure? main)) (main *argv*) #f) \" )"
1033
1165
  "")
1034
1166
  "\n")))
1035
1167
  (else
@@ -1193,5 +1325,5 @@
1193
1325
  ;; global variables
1194
1326
  ;; ----------------------------------------
1195
1327
  (define *nendo-version*
1196
- "0.3.3" ;;NENDO-VERSION
1328
+ "0.3.4" ;;NENDO-VERSION
1197
1329
  )