# How to rename a procedure and use it

**URL:** https://racket.discourse.group/t/how-to-rename-a-procedure-and-use-it/2232
**Category:** General
**Created:** [August 20, 2023, 9:49pm UTC](https://racket.discourse.group/t/how-to-rename-a-procedure-and-use-it/2232 "2023-08-20T21:49:43Z")
**Posts on this page:** 3
**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: [August 20, 2023, 9:49pm UTC](https://racket.discourse.group/t/how-to-rename-a-procedure-and-use-it/2232/1 "2023-08-20T21:49:43Z")

</div>

i have this file containing:

```scheme
(require srfi/31) ;; for 'rec in def.scm
(require srfi/69) ;; Basic hash tables

(require srfi/25) ;; Multi-dimensional Array Primitives
(require srfi/8) ;; Values , receive

(require (rename-in racket/base [for for-racket])) ;; backup original Racket 'for'
;;(define-syntax for-racket (make-rename-transformer #'for))

(require (for-syntax r6rs/private/base-for-syntax)) ;; for macro syntax (for ... : stxparam.rkt identifier-syntax: undefined

(include "def.scm")

(include "array.scm")

(include "declare.scm")
(include "condx.scm")
(include "block.scm")
(include "not-equal.scm")
(include "exponential.scm")
	
(include "while-do-when-unless.scm")
(include "repeat-until.scm")
(include "bitwise.rkt")
(include "modulo.scm")

(include "slice.scm")
       
(include "overload.scm")

(include "set-values-plus.scm")

(include "increment.scm")
(include "for_next_step.scm")

(include "assignment.rkt")
(include "apply-square-brackets.rkt")

```

i try to rename 'for' because i have a personal version in for\_next\_step.scm,  
but if i try to use it:

```scheme
Welcome to DrRacket, version 8.9 [cs].
Language: reader "SRFI/SRFI-105.rkt", with debugging; memory limit: 8192 MB.
. Scheme+.rkt:46:20: module: identifier already required
  also provided by: srfi/69 in: hash
> (for-racket ([i '()])
    (error "doesn't get here"))
. . ../../../../../../../../../Applications/Racket v8.9/collects/racket/private/kw.rkt:1263:25: for-racket: undefined;
 cannot reference an identifier before its definition
> 

```

i searched a lot, find this:

> <https://stackoverflow.com/questions/40373865/how-do-i-rename-a-procedure-with-macros-in-racket>

but it does not works, the error is related to the require of (require srfi/69) ;; Basic hash tables

---

<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: [August 20, 2023, 10:29pm UTC](https://racket.discourse.group/t/how-to-rename-a-procedure-and-use-it/2232/2 "2023-08-20T22:29:29Z")

</div>

A minimal example that demonstrates the error:

```scheme
#lang racket/base
;;; test.rkt

(require srfi/69 (rename-in racket/base [for racket-for]))

(racket-for ([i '()])
            (println "Shouldn't get here"))

```

```sh
$ racket test.rkt
test.rkt:3:28: module: identifier already required
  at: hash
  in: racket/base
  also provided by: srfi/69
  location...:
   test.rkt:3:28

```

To fix: change the use of `rename-in`, which imports everything in a module, renaming some identifiers, to `only-in`, which only imports the specified (Optionally renamed) ones.

---

<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: [August 21, 2023, 6:56am UTC](https://racket.discourse.group/t/how-to-rename-a-procedure-and-use-it/2232/3 "2023-08-21T06:56:27Z")

</div>

thank you it works now:

```scheme
;; Scheme+.rkt 

(require srfi/31) ;; for 'rec in def.scm
(require srfi/69) ;; Basic hash tables

(require srfi/25) ;; Multi-dimensional Array Primitives
(require srfi/8) ;; Values , receive

(require (only-in racket/base [for for-racket])) ;; backup original Racket 'for'

(require (for-syntax r6rs/private/base-for-syntax)) ;; for macro syntax (for ... : stxparam.rkt identifier-syntax: undefined

(include "def.scm")

(include "array.scm")

(include "declare.scm")
(include "condx.scm")
(include "block.scm")
(include "not-equal.scm")
(include "exponential.scm")
	
(include "while-do-when-unless.scm")
(include "repeat-until.scm")
(include "bitwise.rkt")
(include "modulo.scm")

(include "slice.scm")
       
(include "overload.scm")

(include "set-values-plus.scm")

(include "increment.scm")
(include "for_next_step.scm")

(include "assignment.rkt")
(include "apply-square-brackets.rkt")

;; include afer overloadind declarations when any
;;(include "scheme-infix.rkt")

```

partial code:

```scheme
(for-racket ([i (in-range {n - 2})])
		;(for ({i <+ 0} {i < n - 2} {i <- i + 1})

		     ;; calcul des stimuli reçus par la couche cachée d'indice i+1 à-partir de la précedente

		     ;; create an array with 1 in front for the bias coefficient
		    
		     {z_1 <- #(1) + z[i]}

		     {z̃[i + 1] <- M[i] * z_1} ; z̃ = matrix * vector , return a vector

		     (display "z̃[i + 1] = ") (display {z̃[i + 1]}) (newline)

		     ; calcul des réponses des neurones cachés
		     ;
		     ; i use Neoteric Expression :https://sourceforge.net/p/readable/wiki/Rationale-neoteric/
		     ; example: {map(sin '(0.2 0.7 0.3))}
		     ; '(0.19866933079506122 0.644217687237691 0.29552020666133955)
		     ;
		     ; i use Neoteric Expression to easily port Python code to Scheme+
		     ;
		     ; the original Python code was:
		     ; z[i+1] = list(map(self.activation_function_hidden_layer,z̃[i+1]))
		     ; the Scheme+ port is:
		     {z[i + 1] <- vector-map(activation_function_hidden_layer z̃[i + 1])}

		     (display "z[i + 1] = ") (display {z[i + 1]}) (newline)

		  )

```

partial result:

```scheme
> (send net accepte_et_propage #(1.7))
z̃[i + 1] = #(-1.606126902851834 -1.737502623605669)
z[i + 1] = #(-0.9225856290051391 -0.9399363289239167)
z̃[i + 1] = #(0.016731174898548362 1.7978079295067588 1.717414963798468)
z[i + 1] = #(0.01672961387506591 0.9465785338297136 0.9375510040999216)
> 

```
