{"id":28440396,"url":"https://github.com/aygp-dr/lazy-weekends","last_synced_at":"2026-06-23T18:31:49.664Z","repository":{"id":296932325,"uuid":"994405401","full_name":"aygp-dr/lazy-weekends","owner":"aygp-dr","description":"A chill, 8-week Haskell learning journey designed for busy people who want to explore functional programming without the pressure.","archived":false,"fork":false,"pushed_at":"2025-07-12T14:13:49.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-17T11:59:22.496Z","etag":null,"topics":["beginner-friendly","education","functional-programming","haskell","tutorial"],"latest_commit_sha":null,"homepage":null,"language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aygp-dr.png","metadata":{"files":{"readme":"README.org","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-01T21:31:58.000Z","updated_at":"2025-08-02T21:05:51.000Z","dependencies_parsed_at":"2025-06-08T01:32:38.285Z","dependency_job_id":null,"html_url":"https://github.com/aygp-dr/lazy-weekends","commit_stats":null,"previous_names":["aygp-dr/lazy-weekends"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aygp-dr/lazy-weekends","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Flazy-weekends","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Flazy-weekends/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Flazy-weekends/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Flazy-weekends/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aygp-dr","download_url":"https://codeload.github.com/aygp-dr/lazy-weekends/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aygp-dr%2Flazy-weekends/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34702911,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-23T02:00:07.161Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["beginner-friendly","education","functional-programming","haskell","tutorial"],"created_at":"2025-06-06T03:42:46.446Z","updated_at":"2026-06-23T18:31:49.648Z","avatar_url":"https://github.com/aygp-dr.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"#+TITLE: Lazy Weekends: Learn Haskell at Your Own Pace\n#+AUTHOR: Aidan Pace\n#+DATE: 2025-06-02\n\nA chill, 8-week Haskell learning journey designed for busy people who want to explore functional programming without the pressure.\n\n* Philosophy\n\n\"If you miss a weekend, no big deal. If you solve it in a weird way, that's fine too. The goal is to get comfortable with functional thinking, not to optimize everything.\"\n\n* What This Is\n\n- *8 weekend exercises* that build on each other naturally\n- *2-3 hours per weekend* (but take as long as you need)\n- *AOC-style structured problems* with real parsing challenges\n- *No bootcamp pressure* - learn at your own pace\n\n* Structure\n\nEach week has its own folder (=week1/=, =week2/=, etc.) containing:\n\n- =README.md= - Problem description and learning goals\n- =input.txt= - Structured data to parse (no trivial inputs!)\n- =template.hs= - Starter code with type signatures\n- =spoilers/solution.hs= - Reference solution (peek if you're stuck)\n\n* Learning Path\n\n** Weeks 1-2: Foundation\n- Lists, basic functions, simple parsing\n- Getting comfortable with Haskell syntax\n\n** Weeks 3-4: Core Concepts\n- Pattern matching, recursion, custom types\n- Building your functional thinking muscles\n\n** Weeks 5-6: Real Tools\n- Monads, parsing libraries, file I/O\n- Writing actual useful programs\n\n** Weeks 7-8: Polish\n- Real-world problems, performance, style\n- Becoming a confident Haskeller\n\n* Getting Started\n\n** Prerequisites\n- Basic programming experience in any language\n- Curiosity about functional programming\n- A weekend or two to spare\n\n** Setup\n\n1. *Install Haskell* (choose one):\n   #+begin_src bash\n   # GHCup (recommended)\n   curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh\n   \n   # Or via package manager\n   # macOS: brew install ghc cabal-install\n   # Ubuntu: apt install ghc cabal-install\n   # FreeBSD: pkg install ghc hs-cabal-install\n   #+end_src\n\n2. *Clone and start*:\n   #+begin_src bash\n   git clone https://github.com/aygp-dr/lazy-weekends.git\n   cd lazy-weekends/week1\n   ghci template.hs\n   #+end_src\n\n3. *Test your setup*:\n   #+begin_src haskell\n   -- In GHCi\n   :load template.hs\n   main\n   #+end_src\n\n** How to Use Each Week\n\n1. *Read the README* - understand the problem and goals\n2. *Look at input.txt* - see what data you're working with  \n3. *Start with template.hs* - fill in the type signatures\n4. *Run and test* - =ghci template.hs= then call functions\n5. *Check spoilers/* when stuck (no shame!)\n\n* Tips for Success\n\n- *Don't rush* - each concept builds on the last\n- *Experiment in GHCi* - the REPL is your friend\n- *Read error messages* - Haskell's compiler is surprisingly helpful\n- *Embrace weird solutions* - there's usually 5 ways to solve anything\n- *Ask questions* - the Haskell community is friendly\n\n* When You Get Stuck\n\n1. *Read the error message twice* - Haskell errors are better than you think\n2. *Check the spoilers* - they're there for a reason\n3. *Try ~:type~ in GHCi* - understand what you're working with\n4. *Google \"haskell how to X\"* - someone has asked before\n5. *Take a break* - sometimes the solution comes in the shower\n\n* Resources\n\n** Documentation\n- [[https://www.haskell.org/documentation/][Official Haskell Documentation]]\n- [[https://hoogle.haskell.org/][Hoogle]] - Search for functions by name or type signature\n- [[https://hackage.haskell.org/][Hackage]] - Haskell package repository\n\n** Community\n- [[https://www.reddit.com/r/haskell/][r/haskell]] - Reddit community\n- [[https://discord.gg/haskell][Haskell Discord]]\n- [[https://discourse.haskell.org/][Haskell Discourse]]\n- ~#haskell~ channel on Libera.Chat IRC\n\n** Useful GHCi Commands\n#+begin_src haskell\n:t expr        -- Show the type of 'expr'\n:i name        -- Show info about 'name'\n:set +t        -- Show types of evaluated expressions\n:r             -- Reload the current module\n:sprint name    -- Show the current value of 'name'\n:doc function   -- Show documentation for 'function'\n#+end_src\n\n** Debugging Tips\n- Use ~trace~ from ~Debug.Trace~ for print debugging:\n  #+begin_src haskell\nimport Debug.Trace\n\nfactorial n = trace (\"Computing factorial of \" ++ show n) $\n              if n \u003c= 1 then 1 else n * factorial (n-1)\n  #+end_src\n- Break complex expressions into smaller named components\n- Test functions with simple inputs in GHCi\n\n* What You'll Build\n\nBy the end, you'll have written programs that:\n- Parse real data formats\n- Handle errors gracefully  \n- Use monads naturally\n- Solve interesting problems\n- Look like idiomatic Haskell\n\n* Contributing\n\nFound a bug? Have a better explanation? Want to add a week?\nPull requests welcome! This is meant to be a living resource.\n\n-----\n\n*Ready to start?* Head to =week1/= and dive in!\n\n/Remember: The goal isn't perfection, it's progress. Happy lazy coding! 🏖️/","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faygp-dr%2Flazy-weekends","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faygp-dr%2Flazy-weekends","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faygp-dr%2Flazy-weekends/lists"}