[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Help with lambda-procedure
From: |
swedebugia |
Subject: |
Help with lambda-procedure |
Date: |
Sun, 16 Dec 2018 11:48:45 -0800 |
I'm trying hard to improve the npm-explorer[1] with a semver-parser.
I get this error when testing in the REPL:
address@hidden ~/src/guile-npm-explorer$ guile -s npm-explorer.scm
>test.dot
;;; note: source file /home/sdb/src/guile-npm-explorer/npm-explorer.scm
;;; newer than compiled
/home/sdb/.cache/guile/ccache/2.2-LE-4-3.A/home/sdb/src/guile-npm-explorer/npm-explorer.scm.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /home/sdb/src/guile-npm-explorer/npm-explorer.scm
;;; compiled
/home/sdb/.cache/guile/ccache/2.2-LE-4-3.A/home/sdb/src/guile-npm-explorer/npm-explorer.scm.go
Backtrace:
7 (apply-smob/1 #<catch-closure 88f83a0>)
In ice-9/boot-9.scm:
705:2 6 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
619:8 5 (_ #(#(#<directory (guile-user) 88e9910>)))
In ice-9/boot-9.scm:
2312:4 4 (save-module-excursion _)
3831:12 3 (_)
In /home/sdb/src/guile-npm-explorer/npm-explorer.scm:
345:29 2 (generate-dot "mocha" () 0 _)
199:8 1 (choose-version #<hash-table 8918540 18/31> #<procedure…>)
In unknown file:
0 (string-prefix? "*" #<procedure version ()> #<undefined> …)
ERROR: In procedure string-prefix?:
In procedure string-prefix?: Wrong type argument in position 2
(expecting string): #<procedure version ()>
The offending lambda is this one:
(define (parse-semver hashtable version)
"return the newest version within the same major or minor version"
(define (split list)
(string-split list #\.))
(define (version-list hashtable)
(map split
(map first
(hash-table->alist (hash-ref hashtable "versions")))))
(define (major list)
(first list))
(define (minor list)
(second list))
(define (minor->number list)
(string->number (minor (split list))))
;; Return latest minor with same major version.
;; e.g. ^1.1.0 -> 1.4.0 even though 2.0.0 is availiable
(let* ((version (split (string-drop version 1)))
(version-list
(map first
(hash-table->alist (hash-ref hashtable "versions"))))
(same-major
(if (equal? 3 (length version))
(fold
;; recurse through version-list
(lambda (ver lst)
(if (string-prefix? (major version) ver)
(cons ver lst)
lst))
'()
version-list)
;; not a version triplet
#f)))
... (se the rest of the sexp in the file attached.
Any ideas whats wrong? I'm still new to lambdas.
--
Cheers
Swedebugia
[1]
https://gitlab.com/swedebugia/guile-npm-explorer/blob/master/npm-explorer.scm
npm-explorer.scm
Description: Text document
- Help with lambda-procedure,
swedebugia <=