Beginner's question

38 views
Skip to first unread message

Cyrille DEUSS

unread,
Dec 14, 2021, 1:48:46 PM12/14/21
to Racket Users
#lang racket
(require racket/format)

(define pp_number
  (lambda (n)
     (~a n #:width 6 #:align 'right  #:left-pad-string "0")))

(define fp
  (lambda (s n)
    (string-append (pp_number n) " + " s)))

(define f
  (lambda (s n)
    (format "~a + ~a" n s)))

(foldl f "" '(1 2 3))
; works great !

(foldl fp "" '(1 2 3))
; and why not this one ?

Thanks in advance.
Cyrille

Jens Axel Søgaard

unread,
Dec 14, 2021, 2:11:26 PM12/14/21
to Cyrille DEUSS, Racket Users
Try reversing the order for arguments for both fp and f.

/Jens Axel

--
You received this message because you are subscribed to the Google Groups "Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to racket-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-users/e72b954e-0b48-4830-b253-34b904d726bcn%40googlegroups.com.


--
--
Jens Axel Søgaard

David Storrs

unread,
Dec 14, 2021, 3:00:02 PM12/14/21
to Racket Users
Jens answered your question, but I'll note two convenient shorthands:

> #lang racket
> (require racket/format)

racket/format is provided by #lang racket, so you can skip that.

This:

(define fp
  (lambda (s n)
    (string-append (pp_number n) " + " s)))

is the same as this:

(define (fp s n)

    (string-append (pp_number n) " + " s)))
--

Cyrille DEUSS

unread,
Dec 15, 2021, 11:34:23 AM12/15/21
to Racket Users
As usual I didn't read the manual which is a little bit cryptic for a non native speaker.

The signature of fodl is ('a -> 'b -> 'b) -> 'b -> 'a list -> 'b
I was used to the signature of List.fold_left of OCaml where the signature is : ('a -> 'b -> 'a) -> 'a -> 'b list -> 'a
The arguments are reversed...
Thx

Reply all
Reply to author
Forward
0 new messages