/ NonEmptyList / semigroup
semigroup
 1      let NonEmpty = ./Type
 2  
 3  in  let Semigroup = ./../Semigroup/Type
 4  
 5  in    λ(a : Type)
 6      →     let List/op = (./../List/semigroup a).op
 7        
 8        in    { op =
 9                    λ(x : NonEmpty a)
10                  → λ(y : NonEmpty a)
11                  → { head = x.head, tail = List/op x.tail (./toList a y) }
12              }
13            : Semigroup (NonEmpty a)