On Sat, 24 May 2014, Mario Domenech Goulart wrote:
Hi Claude,
On Sat, 24 May 2014 13:17:33 -0400 (EDT) Claude Marinier <[email protected]>
wrote:
Bonjour,
I decided to play with this but it went wrong.
First, start 'csi'.
[claude@hibou ~]$ /opt/chicken/bin/csi
CHICKEN
(c) 2008-2014, The Chicken Team
(c) 2000-2007, Felix L. Winkelmann
Version 4.9.0rc1 (rev 3cf1967)
linux-unix-gnu-x86 [ manyargs dload ptables ]
compiled 2014-04-17 on hd-t1179cl (Linux)
; loading /home/claude/.csirc ...
; loading /opt/chicken/lib/chicken/7/parley.import.so ...
; loading /opt/chicken/lib/chicken/7/chicken.import.so ...
; loading /opt/chicken/lib/chicken/7/data-structures.import.so ...
; loading /opt/chicken/lib/chicken/7/extras.import.so ...
; loading /opt/chicken/lib/chicken/7/ports.import.so ...
; loading /opt/chicken/lib/chicken/7/posix.import.so ...
; loading /opt/chicken/lib/chicken/7/srfi-1.import.so ...
; loading /opt/chicken/lib/chicken/7/srfi-13.import.so ...
; loading /opt/chicken/lib/chicken/7/srfi-18.import.so ...
; loading /opt/chicken/lib/chicken/7/stty.import.so ...
; loading /opt/chicken/lib/chicken/7/srfi-69.import.so ...
; loading /opt/chicken/lib/chicken/7/foreign.import.so ...
; loading /opt/chicken/lib/chicken/7/foreigners.import.so ...
; loading /opt/chicken/lib/chicken/7/parley.so ...
; loading /opt/chicken/lib/chicken/7/stty.so ...
Define the list.
#;1>(define a
'((23 14 19) (28 9 19) (10 10 19) (16 14 18)
(14 8 18) (25 13 18) (13 13 17) (10 7 17)
(27 12 17) (21 12 16) (10 6 16) (5 11 16)
(25 11 15) (6 5 15) (0 10 15) (3 4 14)
(5 3 13) (23 2 12) (16 1 11) (29 0 10)
(15 8 9) (9 5 9) (4 7 8) (17 6 7)
(17 5 6) (28 3 4) (10 0 4) (7 2 3)
(20 1 2) (11 0 1))
)
Display the list.
#;2>(display a)
This produces an endlessly repeating stream of errors. Capturing it
was "interesting".
Error: (substring) out of range
0
-32
Call history:
parley.scm:285: loop
parley.scm:284: reverse
list->string
parley.scm:284: string-split
parley.scm:507: read-raw
parley.scm:476: call-with-current-continuation
parley.scm:478: prompt-loop
parley.scm:419: refresh-line
parley.scm:140: ##sys#call-with-values
parley.scm:141: terminal-size
parley.scm:386: -
parley.scm:389: -
parley.scm:390: floor
parley.scm:392: min
parley.scm:394: modulo
parley.scm:395: substring <--
((23 14 19) (28 9 19) (10 10 19) (16 14 18) (14 8 18) (25 13 18)
(13 13 17) (10 7 17) (27 12 17) (21 12 16) (10 6 16) (5 11 16)
(25 11 15) (6 5 15) (0 10 15) (3 4 14) (5 3 13) (23 2 12) (16 1 11)
(29 0 10) (15 8 9) (9 5 9) (4 7 8) (17 6 7) (17 5 6) (28 3 4)
(10 0 4) (7 2 3) (20 1 2) (11 0 1))
Something is broken. Is it my build or Chicken itself?
I suppose it's something related to parley. Can you try to run the
interactive repl as "csi -n"? Alternatively, you can run it
non-interactively: csi -s list-of-triplets.scm
Correct. It works as expected with both suggested approaches.
It looks like an arithmetic problem, probably while calculating 'end'. No,
that's too simple. Parley has been working well, so this must be an odd
combination of factors. It looks too complicated for me.
Christian, you're most familiar with this. What do you think?
(define (refresh-line prompt port line pos offset)
(let* ((cols (- (get-terminal-columns port)
offset 3))
(plen (+ offset (string-length prompt)))
(chunk-size (- cols offset 1))
(chunkno (inexact->exact (floor (/ pos chunk-size))))
(start (* chunk-size chunkno))
(end (min (string-length line)
(+ start chunk-size)))
(npos (modulo (- pos start) chunk-size))
(delimited-line (substring line start end)))
...
--
Claude Marinier
_______________________________________________
Chicken-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/chicken-users