リストとリストリテラル

ここはかなり苦戦しました。
リストとは値を一列に並べたデータ構造の事です
Haskellではリストはリンクリストと同じ性質を持ち、前から後ろにたどることはできますが逆にはたどれません。
また、Haskellのリストには一種類の値しか入れられません。
『空リスト』( enpty list ) は特別な値でリストの末尾に現れます。
読み方は『からリスト』でも『くうリスト』でも正解です。

   [ 'a' 'b' 'c' ] = 文字のリスト 
 ※ [ ] はリストを表す  中身が入っていない場合 [ ]は空リストを示す
      また、'a' は文字であることを示す
   " abc " = 文字列のリスト 
 Haskellでは文字列もリストなので、文字列は文字のリストとして表現されています
  [ 'a' 'b' 'c' ] =  " abc " 
  Haskellでは['a', 'b', 'c'] というリストと "abc" という文字列を区別しないので
  [ 'a' 'b' 'c' ] の簡単な書き方が " abc " と覚えても良いかもしれません

Haskellでは特別な『文字列』は存在しません。
ですからリストの処理を覚えれば文字列処理も身につけたことになります。
追記ですが、

 [ "aa" "bb" "cc" ]

これは文字列を3つ含むリストです。
要素は前から順番に "aa" "bb" "cc" です。

ダブルコーテーションのくくりとシングルコーテーションの違いが何にあるのか分からず苦労しました。

'a'
['a'] == "a" 
["a"]
 'a'が文字、"a"が文字列

['a', 'b', 'c'] というリストと "abc" という文字列を区別しないので、 同じ要領で"a" は ['a'] の短い書き方になる
解釈するとaという文字はaというリストの中に入っていてaという文字列に含まれているという意味です
ここは本当に理解が難しいところだった!