Do Pure Haskell Interview

Book by
Veronika Romashkina

Work In Progress! Stay tuned to learn more about our new project:

do pure (Haskell Interview)

Go-to Haskell algorithmic and coding book.

About book


Our book is a beginner-friendly and approachable guide to solving coding challenges in modern Haskell. It gives examples of standard programming puzzles with explained solutions.

After reading the book, readers will acquire the following skills:

  • Solve common coding problems in a purely functional way using Haskell
  • Develop general skills for solving more challenging tasks
  • Design functional data structures
  • Analyse performance characteristics (time and memory) of solutions
  • Know language shortcomings: what problems can be solved efficiently in Haskell, and, most importantly, are not suitable for solving in Haskell due to their nature

Audience


Developers who learned FP and want to find a Haskell job but don't know how to prepare for the interview and how to solve standard coding puzzles in Haskell.

Interviewers who want to hire Haskell developers but don't know how to evaluate the experience in Haskell efficiently.

Even if you think that asking Algorithmic Questions during an interview has nothing to do with real-world work, you still might be interested in reading the book for learning new concepts. Sometimes, you need to solve non-trivial problems in your daily job. Even though it is not happening often, it is good to know how to overcome such challenges when they arise.

Audience

Goals


Goals
  • Be beginner-friendly, approachable and pragmatic — no prior academic knowledge is required to understand the book, knowledge of basic Haskell syntax is enough
  • Create the universal book explaining necessary Computer Science (CS) concepts for the standard interviewing processes, preparing people with no CS degree
  • Provide a detailed analysis of the knowledge necessary for coding interviews in Haskell
  • Give real-life production examples of problems requiring algorithmic solutions
  • Share the process of from-idea-to-solution
  • Teach approaches to solve problems in FP style

Table of Contents


  1. About book
  2. Know your tool
    1. FP
    2. Paradigms difference
    3. Immutability
    4. Purity
    5. Laziness
    6. Haskell Type system
    7. Totality
    8. Exercises
  3. Analyse your code
    1. Time and memory
    2. O notation
    3. Exercises
  4. Build Data Structures
    1. Data structure kinds
    2. List
    3. Stack
    4. Queue
    5. Map and Set
      1. Dualism of Maps and Sets
      2. * List
      3. Binary search tree
      4. Map/HashMap/IntMap Set/HashSet/IntSet
    6. Priority Queue
    7. Array
      1. Immutable arrays
      2. Mutable arrays
    8. Graphs
      1. Graph representation
      2. Common graph operations
      3. DFS
      4. BFS
      5. Dijkstra algorithm
    9. Exercises
  5. Choose Problem-solving methods
    1. Bruteforce
    2. Sorting out the problem
    3. Memoization
    4. Dynamic programming
    5. Divide and conquer
    6. Binary search on the answer (square root, minimum in rotated array)
    7. Use appropriate data structure
    8. Meet-in-the-middle
    9. Exercises
  6. Practice Algorithms
    1. Backpack problem
    2. 4-SUM problem
    3. Anagram buckets
    4. k-th large element
    5. Edit distance
    6. Matrix sub-sum
    7. Parenthesis sequence
    8. Check prime number
    9. Calculator
    10. Palindrome
    11. Binary to decimal

We want to hear from you!


Hear from you

The book is only at its early stages, but we are ready to receive any support and feedback.

You can support us on Sponsorship or by supplying us with coffee.

If you are an artist or can design a book cover, don't hesitate to contact us. Make the cover of your dreams come true!

We are also looking for technical editors who can give early reviews, suggestions and any other feedback on the book content.

Reach out to us with any questions, offers and brave ideas!

Authors


Haskell and education are our passions!

We have experience teaching Haskell, Algorithms and Data Structures to students for years. Our blogs contain multiple comprehensive tutorials and guides — from beginner-friendly Haskell introduction posts to description of advanced data structures with type-level interfaces.

In Kowainik we lead multiple open-source projects and mentor people by helping them contribute to open-source.

At the same time, we have years of using Haskell in production — from developing backends of web-services to implementing sophisticated distributed algorithms.

We love explaining complicated and challenging topics in simple ways, and that's why we want to write a book and share our experience and knowledge with everyone!

Veronika Romashkina, @vrom911


I'm a functional programming enthusiast who puts effort into the growth of the Haskell open source community. I'm genuinely passionate about Haskell and have experience working as a full-stack developer using Haskell, Elm, Python, HTML/CSS, PostgreSQL, MySQL and others. I enjoy exploring new topics and never stop learning and improving my skills.

Github Page Web Page Sponsor