Racket is quite a lot more than call/cc and macros.
By the way, FOR loops invite off-by-one errors and worse. Use a combinator like map, or filter or foldr etc, to keep things boring.
By the way, FOR loops invite off-by-one errors and worse. Use a combinator like map, or filter or foldr etc, to keep things boring.
http://docs.racket-lang.org/reference/for.html
eg. fizzbuzz using for, match:
-> (for ([i (range 1 16)])
(match (list (modulo i 3) (modulo i 5))
[(list 0 0) (displayln "fizzbuzz")]
[(list 0 _) (displayln "fizz")]
[(list _ 0) (displayln "buzz")]
[_ (displayln i)]))
1
2
fizz
4
buzz
fizz
7
8
fizz
buzz
11
fizz
13
14
fizzbuzzhttp://docs.racket-lang.org/reference/sequences.html?q=in-ra...
An in-range application can provide better performance for number iteration when it appears directly in a for clause.
-> (for ([i (in-range 1 16)])
(match (list (modulo i 3) (modulo i 5))
[(list 0 0) (displayln "fizzbuzz")]
[(list 0 _) (displayln "fizz")]
[(list _ 0) (displayln "buzz")]
[_ (displayln i)])) map { $_ + 1 } (@list); sub sum_of_squared_pairs {
reduce { $a + $b } map { $_ * $_ } grep { $_ % 2 == 0 } @_
}
sub schwartzian_transform {
map { $_->[0] }
sort { $a->[1] <=> $b->[1] } # use numeric comparison
map { [$_, length $_] } # calculate the length of the string
@_
}