www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 4b9d7cba226f0df93cf9e283443d61324749cd67
parent a103d48aaf2a88c085fd5effa68c4f221c2aadd9
Author: Georges Dupéron <georges.duperon@gmail.com>
Date:   Thu, 10 Nov 2016 17:37:16 +0100

Attempt to make it work without metafunctions, but I think it's going to be difficult to use

Diffstat:
Mtest/test-traversal-1.rkt | 2+-
Mtest/test-traversal-2.rkt | 2+-
Atest/traversal-util.rkt | 23+++++++++++++++++++++++
Mtraversal.hl.rkt | 2+-
4 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/test/test-traversal-1.rkt b/test/test-traversal-1.rkt @@ -1,6 +1,6 @@ #lang type-expander -(require "../traversal.hl.rkt" +(require "traversal-util.rkt" ;"../traversal.hl.rkt" "ck.rkt") (define-type Foo (Listof String)) diff --git a/test/test-traversal-2.rkt b/test/test-traversal-2.rkt @@ -1,6 +1,6 @@ #lang typed/racket -(require "../traversal.hl.rkt" +(require "traversal-util.rkt" ;"../traversal.hl.rkt" type-expander phc-adt "ck.rkt" diff --git a/test/traversal-util.rkt b/test/traversal-util.rkt @@ -0,0 +1,22 @@ +#lang typed/racket +(require (for-syntax syntax/parse + syntax/parse/experimental/template + type-expander/expander) + "../traversal.hl.rkt") + +(provide define-fold) + +(define-syntax define-fold + (syntax-parser + [(_ _function-name:id + _type-name:id + whole-type:type + _type-to-replaceᵢ:type ...) + (with-folds + (λ () + (template + (begin + (define-type _type-name + (∀-replace-in-type whole-type _type-to-replaceᵢ ...)) + (define _function-name + (λ-replace-in-instance whole-type _type-to-replaceᵢ ...))))))])) +\ No newline at end of file diff --git a/traversal.hl.rkt b/traversal.hl.rkt @@ -389,7 +389,7 @@ where @racket[foldl-map] is defined as: (for-meta 2 phc-toolkit/untyped) (for-meta 2 syntax/parse)) - (provide define-fold + (provide with-folds (for-syntax replace-in-instance) (for-syntax replace-in-type)) <foldl-map>