-- Всем привет, проконсультируйте пожалуйста, кто может:
--
-- Имеется некий кастомный тип данных
-- по сути дела пара строк
--
data SPair = SPair String String deriving (Eq, Show)
--
-- некоторый тестовый набор данных
--
testList = [SPair "test1" "abc", SPair "hello" "world",
SPair "goodby" "hell"]
--
-- обьявлена функция получения первой строки пары
--
first (SPair x _) = x
--
-- и имеется 2 реализации функции поиска пары в списке, по
-- значению первой строки как по ключу:
--
--
-- Вариант 1 использует охранные инструкици для организации
-- ветвления:
--
tlookup1 title [] = Nothing
tlookup1 title (x:xs) | (first x) == title = Just x
| otherwise = tlookup1 title xs
--
-- Вариант 2 использует для тех-же целей case .. of :
--
tlookup2 title [] = Nothing
tlookup2 title (x:xs) = case (first x) of
title -> Just x
_ -> tlookup2 title xs
--
-- Ну и закладки для запуска
--
test1 = tlookup1 "hello" testList
test2 = tlookup2 "hello" testList
--
-- Имеем на выходе: вариант 1 корректно работает, а вариант 2
-- возвращает всегда первый элемент списка, как будто-бы
-- под первый кейс подходят любые заголовки.
-- Подскажите куда смотреть
--

Ответ на:
комментарий
от sf
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от Cy6erBr4in
Ответ на:
комментарий
от anonymous

Ответ на:
комментарий
от Cy6erBr4in
Ответ на:
комментарий
от anonymous

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Case со строками (2014)
- Форум [cl][нубский вопрос] case и строки (2012)
- Форум Haskell - The Craft of Functional Programming (2006)
- Форум Bash конструкция (2018)
- Форум SQL case (2015)
- Форум NAS case (2014)
- Форум case KEY_UP (2008)
- Форум switch ... case (2010)
- Форум CASE средства (2002)
- Форум Строка состояния vim в haskell mode (2012)