]> git.rmz.io Git - my-scheme.git/commit
Show values for Lists
authorSamir Benmendil <me@rmz.io>
Tue, 23 Jan 2018 22:46:38 +0000 (22:46 +0000)
committerSamir Benmendil <me@rmz.io>
Tue, 23 Jan 2018 22:46:38 +0000 (22:46 +0000)
commit200ca1efa940b94af2099828c36d6580addb6de9
tree07c58a7bb42d08e629b675bdb7d2f8126511b3fc
parentfabc3d8bdaef310b2f18bc53735ad7ee53518822
Show values for Lists

`unwordsList :: [LispVal] -> String` composes three functions:
* `map :: (a -> b) -> [a] -> [b]` a function with two "arguments"[0], a
  function `(a -> b)` and a list of `a`s (`[a]`) and returns a `[b]`, i.e.
  it applies the function in the first argument to every element of the
  second
* `showAll :: LispVal -> String` described in the previous commit.
  `map showAll` returns a function that applies `showAll` to each
  element of the list it gets.
* `unwords :: [String] -> String` which joins a list of Strings with
  spaces.

The `.` dot operator is used to pass the output of rhs to the input of
lhs. So in essence, `unwordsList` is a function that will `unword` the
list of Strings returned by `map`ing `showVal` to the list of `LispVal`s
passed to `unwordsList`.

[0] Remember that all functions are curried, and actually only take one
argument and return a "partial function" that takes the next argument.
app/Main.hs