;; Procedures to deal with Go's semantic versions. (define-library (zilch lang go version) (import (scheme base) (srfi 152)) (export parse-version versionnumber (string-copy vstr 1 first-period))) (define minor (string->number (string-copy vstr (+ first-period 1) second-period))) (define patch (string->number (string-copy vstr (+ second-period 1) (or prerelease-dash build-dash (string-length vstr))))) (define prerelease (and prerelease-dash (string-copy vstr (+ prerelease-dash 1) (or build-dash (string-length vstr))))) (define build (and build-dash (string-copy vstr (+ build-dash 1)))) (list major minor patch prerelease build)) ;; Returns `#t` if `left` is a smaller version than `right`. (define (version