[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
guile style
From: |
jerry |
Subject: |
guile style |
Date: |
Fri, 18 Jun 2021 20:55:34 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
I am fairly new to guile and scheme. People tell me that I should use a
functional style.
I have 3 solutions for project euler problem #1. The first is
functional, the second is imperative and the third is written in "Little
Schemer" style.
I was hoping other guile users would comment on preferences or the
"correct way". Sorry in advance for any wrapping problems that may occur.
#!/usr/local/bin/guile -s
!#
(use-modules (srfi srfi-1) (jpd stdio)) ;; for folds
(define N 1000)
(define ans
(fold + 0
(filter
(lambda (x) (or (= 0 (modulo x 3)) (= 0 (modulo x 5))))
(iota N))))
(print ans)
(define ans 0)
(for i N
(if (or (= 0 (modulo i 3)) (= 0 (modulo i 5))) (set! ans (+ ans i))))
(print ans)
(define ans
(let loop ((i 1) (ans 0))
(cond
((>= i N) ans)
((or (= 0 (modulo i 3)) (= 0 (modulo i 5))) (loop (1+ i) (+ ans i)))
(else (loop (1+ i) ans)) )))