Ката «Діамант» приймає на вхід літеру та виводить її у формі діаманта. Отримавши літеру, вона друкує діамант, що починається з 'A', а надана літера опиняється в найширшому місці.
У наведених нижче прикладах пробіли позначено символами ·.
Діамант для літери 'A':
A
Діамант для літери 'C':
··A··
·B·B·
C···C
·B·B·
··A··
Діамант для літери 'E':
····A····
···B·B···
··C···C··
·D·····D·
E·······E
·D·····D·
··C···C··
···B·B···
····A····
Реалізуйте функцію diamond, яка виводить ромб, що починається з A, а в
найширших його точках стоїть заданий символ. Скористайтеся наведеною
сигнатурою, якщо є сумніви щодо типів, але не дозволяйте їй обмежувати
творчий підхід:
diamond :: Char -> Maybe [String]
У цій вправі ми працюємо з текстовими даними. З історичних причин тип
String у Haskell є синонімом [Char], тобто масиву символів. Для
ефективнішої роботи з текстовими даними можна використати тип Text.
Як необовʼязкове доповнення до цієї вправи можна
- text до списку залежностей у package.yaml.Data.Text у такий
спосіб:import qualified Data.Text as T
import Data.Text (Text)
diamond :: Char -> Maybe [Text] і
звертатися до комбінаторів Data.Text як, наприклад, T.pack,Data.Text,String на Text у Diamond.hs:diamond :: Char -> Maybe [Text]
Ця частина цілком необовʼязкова.