Homework to practice different ways of branching in Haskell and modularization
Homework to practice different ways of branching in Haskell and modularization
Open src/Lib.hs
and implement all the TODOs there. You can also check the specification in test/Spec.hs
and run the tests with stack test
.
To complete you will need to work also with src/Examples.hs
and src/Data/DummyList/Examples.hs
, but you are not allowed to change those nor data types in src/Lib.hs
and it is also forbidden to add new dependencies.
czechSalutation
should return salutation (in nominative, 1st case = “1. pád”) in the Czech language for given person (gender, age, marital status and academic titles must be used appropriately). For details read the comment in code and check test specification, you can also read (1), (2), and (3) if interested (Czech only). Do not edit prepared data types, just implement the function.intervalContains
should tell for given number if is in interval or not. Do not edit prepared data type, just implement the function.shapeCircumference
and shapeArea
should return circumference and area of given shape (can be Circle, Square, Rectangle, or Triangle). Do not edit prepared data type, just implement the function.arithmeticSequence
should return for given a
(first parameter) and d
(second parameter) a arithmetic sequence as endless list.fibonacciNumbers
should return an endless list of Fibonacci numbers. Try to find a solution on your own and enjoy laziness with Haskell - it is so easy…matrixMultiplication
returns a product of two matrices x
and y
(matrix multiplication, check the size). You must use list comprehension!dummyListExample1
, stringExample2
, stringExample2
should be assigned with values from Data.DummyList.Examples
(example1
) and Data.MyString.Examples
(example2
and example3
). It is not allowed to copy or “implement” them, working import must be used.Hints & general requirements:
where
or let-in
) in functions should be introduced to make the code more readable. Creating helper functions in module scope is awful.if-then-else
with patterns and guards (and/or combination of those two) if possible and better for readability.Prelude
, Data.List
) with general tasks like finding a maximum in list, converting Integers
to generic numbers, or getting unique values from a list. Do not re-invent the wheel!This project is licensed under the MIT License - see the LICENSE
file for more details.