# Cify & Schemify & Nanopass

**URL:** https://racket.discourse.group/t/cify-schemify-nanopass/3552
**Category:** Questions & Answers
**Created:** [February 9, 2025, 5:41am UTC](https://racket.discourse.group/t/cify-schemify-nanopass/3552 "2025-02-09T05:41:51Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![YongaTechnic](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/yongatechnic/32/2109_2.png) [@YongaTechnic](https://racket.discourse.group/u/YongaTechnic)
#### Post date: [February 9, 2025, 5:41am UTC](https://racket.discourse.group/t/cify-schemify-nanopass/3552/1 "2025-02-09T05:41:51Z")

</div>

Hi fellows,

I want to learn about City & Schemify and Nanopass.

What is the best way to learn? Any suggestions?

Thanks

---

<div class="post-metadata">

### Author: ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)
#### Post date: [February 9, 2025, 2:44pm UTC](https://racket.discourse.group/t/cify-schemify-nanopass/3552/2 "2025-02-09T14:44:22Z")

</div>

With respect to Nanopass.

I would start with this talk by Andy Keep:

[![](https://global.discourse-cdn.com/free1/uploads/racket/original/2X/c/c602f1a22ff7b84fc1c08ff9e57eb9e3f90af1b8.jpeg "Andy Keep - Writing a Nanopass Compiler") ](https://www.youtube.com/watch?v=Os7FE3J-U5Q)

Then study the documentation. Then check out some of the examples in the nanopass repo.

---

<div class="post-metadata">

### Author: ![YongaTechnic](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/yongatechnic/32/2109_2.png) [@YongaTechnic](https://racket.discourse.group/u/YongaTechnic)
#### Post date: [February 10, 2025, 10:43am UTC](https://racket.discourse.group/t/cify-schemify-nanopass/3552/3 "2025-02-10T10:43:42Z")

</div>

Thanks, I have already watched this, and finished the Essentials of Compilation in Racket (kind of nano pass style book).

I was wondering there are good projects using NanoPass. Also, I want to learn CIFY and Schemify in detail, any tips for those are greatly appreciated.

---

<div class="post-metadata">

### Author: ![soegaard](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/soegaard/32/19_2.png) [@soegaard](https://racket.discourse.group/u/soegaard)
#### Post date: [February 10, 2025, 11:53am UTC](https://racket.discourse.group/t/cify-schemify-nanopass/3552/4 "2025-02-10T11:53:32Z")

</div>

Nanopass is used in Urlang (an JS-as-S-expressions language):

```
https://github.com/soegaard/urlang/blob/master/urlang/main.rkt

```

As well as in the WIP Racket to JavaScript compiler:

```
https://github.com/soegaard/urlang/tree/master/compiler-rjs

```

The passes are in "compiler.rkt", "compiler2.rkt", and "compiler3.rkt".  
The runtime in "runtime.rkt" is written using the Urlang language.
