Sha256: 028306ff5d5851dadea2538b8cd02fd46eb5dd082484eeb63fcd00abb5d02eb8

Contents?: true

Size: 1.47 KB

Versions: 183

Compression:

Stored size: 1.47 KB

Contents

# Accumulate

Implement the `accumulate` operation, which, given a collection and an
operation to perform on each element of the collection, returns a new
collection containing the result of applying that operation to each element of
the input collection.

Given the collection of numbers:

- 1, 2, 3, 4, 5

And the operation:

- square a number (`x => x * x`)

Your code should be able to produce the collection of squares:

- 1, 4, 9, 16, 25

Check out the test suite to see the expected function signature.

## Restrictions

Keep your hands off that collect/map/fmap/whatchamacallit functionality
provided by your standard library!
Solve this one yourself using other basic tools instead.

Lisp specific: it's perfectly fine to use `MAPCAR` or the equivalent,
as this is idiomatic Lisp, not a library function.

## Hints
For this exercise the following F# feature comes in handy:
- [Tail recursion](https://blogs.msdn.microsoft.com/fsharpteam/2011/07/08/tail-calls-in-f/) Prevent stack overflows with large input by using tail recursion. While there are no test cases checking explicitly for this, using tail recursion leads to a more performant solution. Another good resource on tail recursion is [this blog post](http://blog.ploeh.dk/2015/12/22/tail-recurse/).

## Source

Conversation with James Edward Gray II [https://twitter.com/jeg2](https://twitter.com/jeg2)

## Submitting Incomplete Solutions
It's possible to submit an incomplete solution so you can see how others have completed the exercise.

Version data entries

183 entries across 183 versions & 1 rubygems

Version Path
trackler-2.2.1.180 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.179 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.178 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.177 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.176 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.175 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.174 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.173 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.172 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.171 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.170 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.169 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.167 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.166 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.165 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.164 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.163 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.162 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.161 tracks/fsharp/exercises/accumulate/README.md
trackler-2.2.1.160 tracks/fsharp/exercises/accumulate/README.md