2016-03-17 01:38:35 +00:00
|
|
|
module Sublist (..) where
|
2016-03-17 01:38:51 +00:00
|
|
|
|
2015-10-12 16:46:15 +00:00
|
|
|
import List exposing (..)
|
|
|
|
import String
|
|
|
|
|
2016-03-17 01:38:51 +00:00
|
|
|
|
2015-10-12 16:46:15 +00:00
|
|
|
sublist : List a -> List a -> String
|
|
|
|
sublist alist blist =
|
2016-03-17 01:38:51 +00:00
|
|
|
if alist == blist then
|
|
|
|
"Equal"
|
|
|
|
else if inList alist blist then
|
|
|
|
"Superlist"
|
|
|
|
else if inList blist alist then
|
|
|
|
"Sublist"
|
|
|
|
else
|
|
|
|
"Unequal"
|
|
|
|
|
2015-10-12 16:46:15 +00:00
|
|
|
|
|
|
|
inList : List a -> List a -> Bool
|
|
|
|
inList alist blist =
|
2016-03-17 01:38:51 +00:00
|
|
|
let
|
|
|
|
getLastInList sublist =
|
|
|
|
case (List.tail sublist) of
|
|
|
|
Just list ->
|
|
|
|
list
|
2015-10-12 16:46:15 +00:00
|
|
|
|
2016-03-17 01:38:51 +00:00
|
|
|
Nothing ->
|
|
|
|
[]
|
2015-10-12 16:46:15 +00:00
|
|
|
in
|
2016-03-17 01:38:51 +00:00
|
|
|
if (List.length alist) < (List.length blist) then
|
|
|
|
False
|
|
|
|
else if (List.take (List.length blist) alist) == blist then
|
|
|
|
True
|
|
|
|
else
|
|
|
|
inList (getLastInList alist) blist
|