From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ed1-x52c.google.com (mail-ed1-x52c.google.com [IPv6:2a00:1450:4864:20::52c]) by sourceware.org (Postfix) with ESMTPS id 956E43858D37 for ; Sat, 7 Oct 2023 08:32:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 956E43858D37 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ed1-x52c.google.com with SMTP id 4fb4d7f45d1cf-522bd411679so4800311a12.0 for ; Sat, 07 Oct 2023 01:32:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1696667536; x=1697272336; darn=sourceware.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=hAgdVr2kNzC746BVPVCPncNfIvH1iFeJmozGDyPtkXk=; b=J5Wj8RV/H5q3+ooB1muFxv+dC6vfztE1D3ebqc/hGQeP33uvbKV1vwo9QhTbFp2VfF v4S9RzlzhjbeLG/QGUt/CgWCJOPC3XSPJ+S7Hc2AgRUFqnQvENfUPLqtuvebxI1inbtb hVcCqKjrpqrsgjrAD7JKlsMWzbEEip9QThpnXN92RA1SuB+9bGq5O52SuBgD+Rcj9860 /3qwaKwJ4cDMuFzId+fhCXUjht3K+nyIGr7FH2r5p0qPhpqhgntsiK0i8Vc2ao7NZKgr aNB2ViBI01x88tBjjbi+OrkT8MBEI7ikTIh0metzZnzqkLCyuDW+ZTPqUvlrsswZNTr4 Kw+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1696667536; x=1697272336; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=hAgdVr2kNzC746BVPVCPncNfIvH1iFeJmozGDyPtkXk=; b=hE81FQZQZc6b3Bxs/R8asUGkOagiSNDkqK9kOTwB2n/sOsqyhOCrkTLkb9ADmVH55N TbEU4cpDNpQ+AMyHAum8K4DBetITUgDA/G8+95C7gwH6B69dUAzq2j7F16J9z4XbSqYk 2IUoHXgIb15IV7fH2u5nQ0caYApYIOpgPF9/BgnBkYqwbQUeMpik08KAIGutx0ki7TkN csl92O2JNy8+vKHNKnV6jJclMn/EsDBRL98HK++RytTqs6Kn33H3tfvhJshdIjFY4v/e nYth2VWCuWPlwrWLAbSjuDE2mM0brz0QWiV1K2Dx5kcroSeZjkDram1jUeNLgmVcXaJT HRDw== X-Gm-Message-State: AOJu0YxCr/u6NaYYi34gqHfL9F5EaiYSQvEzj8KCzo4PJ+kj3aMPjlyx 2ULHxBFOdNcv9kOPThHjXTPZtyqTt/JA8kvdwMPJWnsX6h4= X-Google-Smtp-Source: AGHT+IFF77R95aQ3qKe1jsbSmBNUBKXNA9GTcLMCn8UjkVKADfSCpMqSI74CnLGYj1mP3rgLkFdayuq7viaVCufnu80= X-Received: by 2002:aa7:d683:0:b0:527:251e:1be8 with SMTP id d3-20020aa7d683000000b00527251e1be8mr9522236edr.13.1696667535902; Sat, 07 Oct 2023 01:32:15 -0700 (PDT) MIME-Version: 1.0 From: Damien Mattei Date: Sat, 7 Oct 2023 10:32:04 +0200 Message-ID: Subject: rec in kawa? To: kawa mailing list Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-0.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: i have this definition but i miss rec in kawa: ;; scheme@(guile-user)> (def (foo) (when #t (return "hello") "bye")) ;; scheme@(guile-user)> (foo) ;; "hello" ;; (def x) ;; (def (foo n) ;; (cond ((= n 0) 'end0) ;; ((= n 7) (return 'end7)) ;; (else (cons n (foo {n - 1}))))) ;; scheme@(guile-user)> (foo 5) ;; (5 4 3 2 1 . end0) ;; scheme@(guile-user)> (foo 10) ;; (10 9 8 . end7) ;; (def (bar n) ;; (cond ((= n 0) 'end0) ;; ((= n 7) (return-rec 'end7)) ;; (else (cons n (bar {n - 1}))))) ;; scheme@(guile-user)> (bar 5) ;; $4 = (5 4 3 2 1 . end0) ;; scheme@(guile-user)> (bar 10) ;; $5 = end7 (define-syntax def (lambda (stx) (syntax-case stx () ;; multiple definitions without values assigned ;; (def (x y z)) ((_ (var1 ...)) #`(begin (define var1 '()) ...)) ;; (def (foo) (when #t (return "hello") "bye")) ;; ((_ ( ...) * ...) ;; (let ((ret-id (datum->syntax stx 'return))) ;; #`(define ( ...) ;; (call/cc (lambda (#,ret-id) * ...))))) ((_ ( ...) * ...) (let ((ret-id (datum->syntax stx 'return)) (ret-rec-id (datum->syntax stx 'return-rec))) #`(define ( ...) (call/cc (lambda (#,ret-rec-id) (apply (rec (lambda ( ...) (call/cc (lambda (#,ret-id) * ...)))) (list ...))))))) ;; single definition without a value assigned ;; (def x) ((_ var) #`(define var '())) ;; (def x 7) ((_ var expr) #`(define var expr)) ((_ err ...) #`(syntax-error "Bad def form")) ))) any idea of replacement for it?