Question: I have a list of strings (see below) how do I concatenate these strings into one list containing one string.

```
["hello","stack","overflow"] 

```

to 

```
["hellostackoverflow"]

```

I am just allowed to import Data.Char and Data.List

Answer: 
Consider each string in a list as a list of characters

```
["hello","stack","overflow"] :: [[Char]]

```

Concatenation is a process of connecting several lists into one. It must have a following type:

```
concat :: [[a]] -> [a]

```

If you will have such a function, you'll get a half of job done. You are looking for a way to get 

```
["hellostackoverflow"]

```

as a result of concatenation. Once again, look at it's type:

```
["hellostackoverflow"] :: [[Char]]

```

It is the same type as you had at the beginning except that there is only one element in a list. So now you need a function which puts something into a list. It must have a type

```
putToList :: a -> [a]

```

Once you'll have both `concat` and `putToList` functions, your solution will be almost ready. Last thing you need to do is to compose it like that:

```
myConcatenation = putToList . concat

```

---

I suggest you to use [Hoogle](https://www.haskell.org/hoogle/) to search existing function by it's type.
You can also use the list monad to reduce the list to a single string, then re-wrap the result in a list.

```
> [["hello", "stack", "overflow"] >>= id]
["hellostackoverflow"]

```

The preceding avoids explicitly use of `Control.Monad.join`:

```
> import Control.Monad
> [join ["hello", "stack", "overflow"]
["hellostackoverflow"]

```