# Transducers for Racket

**URL:** <https://racket.discourse.group/t/transducers-for-racket/3601>\
**Category:** General\
**Created:** [March 3, 2025, 10:57am UTC](https://racket.discourse.group/t/transducers-for-racket/3601 "2025-03-03T10:57:44Z")\
**Posts on this page:** 14\
**Page:** 1

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 3, 2025, 10:57am UTC](https://racket.discourse.group/t/transducers-for-racket/3601/1 "2025-03-03T10:57:45Z")

</div>

Hi,

i make available public a package for Racket : SRFI 171 Transducers.

I'm NOT THE AUTHOR (i had contacted him by mail many years ago with no answer) of the code of Transducers. I have just ported the code (3 years ago , very few changes) to Racket from Guile and packaged it in the Racket system package :

> **[transducers-srfi-171](https://pkgs.racket-lang.org/package/transducers-srfi-171)**
>
> Transducers SRFI 171

It was not public, but as i saw some interest in transducers (in the Qi project for example) i made it available public.

If someone want to clone it in his own repository (Racket package requires to have a github account with public repository) i will be glad to be discharged of that. I had tested transducers for Guile and Racket in the hope of speeding up some code many years ago but did not really get significant results.  
I even forget what are transducers about 😅.

Damien

---

<div class="post-metadata">

**Author:** ![benknoble](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/benknoble/32/16_2.png) [@benknoble](https://racket.discourse.group/u/benknoble)\
**Post date:** [March 3, 2025, 5:54pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/2 "2025-03-03T17:54:02Z")

</div>

One nit: you can create Racket packages without GitHub. It's just convenient.

I do wonder whether the package server supports other forges already (SourceHut and others came up recently in the Discord)?

---

<div class="post-metadata">

**Author:** ![shawnw](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/shawnw/32/1031_2.png) [@shawnw](https://racket.discourse.group/u/shawnw)\
**Post date:** [March 3, 2025, 6:34pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/3 "2025-03-03T18:34:02Z")

</div>

I also have a Racket version of SRFI-171 in my [extra-srfi-libs package](https://docs.racket-lang.org/extra-srfi-libs/index.html) fwiw. Includes support for a couple of extra Racket datatypes.

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 3, 2025, 7:20pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/4 "2025-03-03T19:20:22Z")

</div>

by default it seems to be proposed only github

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 3, 2025, 9:01pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/5 "2025-03-03T21:01:33Z")

</div>

it seems there is also transducers in this package:

> **[rebellion](https://pkgs.racket-lang.org/package/rebellion)**
>
> A collection of infrastructure libraries

---

<div class="post-metadata">

**Author:** ![benknoble](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/benknoble/32/16_2.png) [@benknoble](https://racket.discourse.group/u/benknoble)\
**Post date:** [March 4, 2025, 2:49pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/6 "2025-03-04T14:49:44Z")

</div>

Perhaps I misremembered; I thought the PLT server would accept any package URLs that worked à la [the docs](https://docs.racket-lang.org/pkg/getting-started.html#%28part._.What_is_a_.Package_%29).

---

<div class="post-metadata">

**Author:** ![samth](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/samth/32/3_2.png) [@samth](https://racket.discourse.group/u/samth)\
**Post date:** [March 4, 2025, 3:17pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/7 "2025-03-04T15:17:21Z")

</div>

You can specify anything that the docs indicate (that's what the docs are about). There is no restriction to github.

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 4, 2025, 4:55pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/8 "2025-03-04T16:55:51Z")

</div>

perheaps we misunderstand what about we talk,  
i mean when i'm connected to [https://pkgs.racket-lang.org/](https://pkgs.racket-lang.org/)  
i only have those options : github and simple URL (i forget to mention this but i do not know how simple URL works) ,see screenshot :

 ![image](https://global.discourse-cdn.com/free1/uploads/racket/original/2X/9/9fbd7000a6efddbbc4da053a2444f37abad6b188.jpeg)

---

<div class="post-metadata">

**Author:** ![samth](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/samth/32/3_2.png) [@samth](https://racket.discourse.group/u/samth)\
**Post date:** [March 4, 2025, 10:05pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/9 "2025-03-04T22:05:23Z")

</div>

That says "Git repository" (not github) and the entire text field is editable.

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 4, 2025, 11:02pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/10 "2025-03-04T23:02:14Z")

</div>

ah yes, when editing one can change it to gitlab for example, but i haven't such an account.

---

<div class="post-metadata">

**Author:** ![notjack](https://avatars.discourse-cdn.com/v4/letter/n/e47774/32.png) [@notjack](https://racket.discourse.group/u/notjack)\
**Post date:** [March 5, 2025, 12:30am UTC](https://racket.discourse.group/t/transducers-for-racket/3601/11 "2025-03-05T00:30:16Z")

</div>

That one's mine, yeah. Always happy to see more interest in transducers.

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 5, 2025, 9:47am UTC](https://racket.discourse.group/t/transducers-for-racket/3601/12 "2025-03-05T09:47:28Z")

</div>

it was perheaps not already transducer libray for Racket:  
i just made some test with transducers to optimize code few years ago but i no more use it,it is now commented in code:

> <https://github.com/damien-mattei/library-FunctProg/blob/master/racket/logiki%2B.rkt#L3520>

It was a port from a Guile Scheme code to Racket code and as the original transducers code was for guile hosted on sourcehut (there is an automatic process to clone it to github and i was not sure i could have clone it and host it on sourcehut for racket packager) if i remember well and the original author was asking for porting it to racket as he had no skill for that and i needed a transducer package for racket so i ported it. It was quite easy as i knew a bit how the racket package system worked.But i keeped the code private on github many years.

I see there is some download on github since i had made it public:

 ![transducers](https://global.discourse-cdn.com/free1/uploads/racket/original/2X/d/ddb9853ada4dc0a26d04680fb06c3abd824b1ba8.png)

that is strange because the easy way to install it is from racket package system.

And the more important part of downloads should be from racket package.

But i did not know any way for an user to have any statistic on download on the racket package system , this could be a good idea to have such a feature for Racket package. I mean that at least the creator of a package could know how many download of his library has happened each day.  
I have a few packages for Racket but i only know the number of download via github, only administrator of the site of Racket system packager can know that....

---

<div class="post-metadata">

**Author:** ![samth](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/samth/32/3_2.png) [@samth](https://racket.discourse.group/u/samth)\
**Post date:** [March 5, 2025, 4:27pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/13 "2025-03-05T16:27:50Z")

</div>

You can change it to anything you want, you don't need to use gitlab. How do you host the code you want to make into a package?

---

<div class="post-metadata">

**Author:** ![damien\_mattei](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/damien_mattei/32/2706_2.png) [@damien\_mattei](https://racket.discourse.group/u/damien_mattei)\
**Post date:** [March 5, 2025, 6:29pm UTC](https://racket.discourse.group/t/transducers-for-racket/3601/14 "2025-03-05T18:29:43Z")

</div>

all is already good.all my code i want to share for Racket are already interconnected between github and Racket-package.
