Я пытаюсь создать тип для простых пар ключ/значение, которые могут быть преобразованы в URL-запрос. Таким образом, я создал следующий ADT:Почему функция showList Haskell возвращает ShowS
data Target where
(:=>) :: String -> String -> Target
instance Show Target where
show (a :=> b) = a ++ "=" ++ b
showList (xs) = (\y -> intercalate "&" $ map show xs)
Когда я запускаю его в GHCI работает точно так, как я хочу:
ghci>["id" :=> "123", "color" :=> "red"]
id=123&color=red
it :: [Target]
Мой вопрос: Зачем мне нужен лямбда в showList
? Я попробовал show y
, и он просто печатает пустую строку. Какова цель возврата ShowS
, когда аргумент просто пуст? Или, может быть, лучший вопрос, к какой функции showS
применяется в этом случае?