{"id":26194289,"url":"https://github.com/active-group/funar","last_synced_at":"2025-04-15T03:15:19.461Z","repository":{"id":59666533,"uuid":"194331375","full_name":"active-group/funar","owner":"active-group","description":"Materials for FUNAR trainings - previous trainings are archived as branches","archived":false,"fork":false,"pushed_at":"2025-03-27T14:46:50.000Z","size":19574,"stargazers_count":11,"open_issues_count":0,"forks_count":4,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-04-15T03:15:13.979Z","etag":null,"topics":["architecture","functional-programming","haskell","racket"],"latest_commit_sha":null,"homepage":"","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/active-group.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2019-06-28T20:38:38.000Z","updated_at":"2025-03-27T14:46:54.000Z","dependencies_parsed_at":"2025-03-24T09:30:34.739Z","dependency_job_id":"0c463486-7fd0-49fd-8659-1541d401af43","html_url":"https://github.com/active-group/funar","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/active-group%2Ffunar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/active-group%2Ffunar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/active-group%2Ffunar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/active-group%2Ffunar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/active-group","download_url":"https://codeload.github.com/active-group/funar/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248997080,"owners_count":21195799,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["architecture","functional-programming","haskell","racket"],"created_at":"2025-03-12T01:56:03.332Z","updated_at":"2025-04-15T03:15:19.455Z","avatar_url":"https://github.com/active-group.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Technische Vorbereitung\n\nBei der Schulung ist es sinnvoll, den Code nachzuvollziehen bzw. eigenen zu\nschreiben.\n\n## Vorkurs\n\nFür den Vorkurs bitte Racket installieren, mindestens Version 8.14:\n\nhttps://download.racket-lang.org/\n\n## Hauptteil\n\nJe nach Betriebssystem haben sich unterschiedliche Installationsmethoden als\nuniversell brauchbar herauskristallisiert. Die Windows-Variante baut auf Docker\nauf und sollte grundsätzlich auch auf Linux funktionieren, hat aber in der\nVergangenheit in speziellen Setups Probleme durch UID-Mapping bereitet.\n\n### Via Docker (Windows, macOS, Linux, ...)\n\n- [Docker](https://www.docker.com/) installieren\n- für macOS und Windows: der Docker-VM ggf. mindestens 6GB Speicher geben\n- [Visual Studio Code](https://code.visualstudio.com/download) installieren\n- die Extension \"Dev Containers\" (`ms-vscode-remote.remote-containers`)\n  installieren: Auf das Extensions-Icon links klicken, nach \"Containers\" suchen,\n  \"Dev Containers\" anwählen, auf \"Install\" klicken\n- auf das Datei-Icon links oben klicken\n- oben im Menü \"View\" -\u003e \"Command Palette\", dort \"containers\" tippen, \"Remote -\n  Containers: Open Folder in Container\" selektieren\n- das Top-Level-Verzeichnis (Ort des geklonten Repos) selektieren\n\nDa sollte jetzt eine Meldung erscheinen, dass ein Docker-Image gebaut bzw.\ngeladen wird. Das kann eine Weile dauern, sollte aber ohne Fehlermeldung\nvonstatten gehen.\n\n- In der Datei `haskell-code/Intro.hs` das `module` verunstalten (z. B. einen\n  Buchstaben entfernen)\n\nNach etwas initialer Ladezeit sollten in der Datei Anmerkungen des Linters\nerscheinen.\n\n#### UID-Remapping-Problem (u. U. nur Linux)\n\nFalls im Docker-Container Berechtigungsprobleme auftreten, kann es helfen, das\nImage bauen zu lassen (statt herunterzuladen). Dazu:\n\n- In [devcontainer.json](./.devcontainer/devcontainer.json) statt `\"image\"` die\n  Zeile mit `\"dockerFile\"` einkommentieren\n- Im [Dockerfile](./.devcontainer/Dockerfile) im dokumentierten Abschnitt die\n  `1000` durch die jeweils eigene UID und GID ersetzen\n- VSCode neustarten und den Ordner wieder im Container öffnen -\u003e es sollte nun\n  ein Image frisch gebaut werden, was etwas dauert\n\n### Via Nix-Installation (Linux, macOS, vmtl. WSL2)\n\n- Die Single-User-Variante von [Nix\n  installieren](https://nixos.org/download.html#nix-install-linux) (Multi-User\n  funktioniert auch, ist aber schwieriger wieder vom System zu entfernen, falls\n  man das möchte)\n- [Flakes einschalten](https://nixos.wiki/wiki/Flakes): in der Regel bedeutet\n  das, in `~/.config/nix/nix.conf` die folgende Zeile einzutragen:\n\n  ```\n  experimental-features = nix-command flakes\n  ```\n\n- `cd \u003cpath-to\u003e/funar`\n- `nix develop .#withVSCode` ausführen -\u003e Sie befinden sich nun in einer\n  projektspezifischen, entsprechend gekennzeichneten Umgebung\n- Mit `code .` VSCode in diesem Ordner öffnen\n- In der Datei `haskell-code/Intro.hs` das `module` verunstalten (z. B. einen\n  Buchstaben beim `where` entfernen)\n- Nach etwas Wartezeit (in der unteren Leiste sollte \"Processing\" oder ähnlich\n  zu sehen sein) sollte etwas rot unterschlängelt werden\n\n#### Anmerkungen\n\n- Falls Sie Ihr \"eigenes\" VSCode nutzen möchten (auf eigene Gefahr), schreiben\n  Sie bitte einfach `nix develop` (lassen also das `.#withVSCode` weg). Sie\n  benötigen dann noch die Extension `haskell.haskell`.\n- Diese Instruktionen funktionieren auch auf macOS, allerdings ist dort keine\n  Single-User-Installation von Nix (mehr) möglich.\n\n### Fallback: Gitpod\n\nFalls lokale Installationen (z. B. Docker) nicht funktionieren oder nicht\nerlaubt sind, ist Gitpod eine mögliche Alternative. Bei Klick auf den Button\nöffnet sich eine browserbasierte VSCode-Umgebung, in der FUNAR lauffähig sein\nsollte. Falls ein Popup erscheint, das fragt, wie der Haskell-Language-Server\ngefunden werden soll, dann bitte \"Manually via PATH\" auswählen!\n\n[![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/active-group/funar)\n\n## Elm\n\nFalls Model-View-Update drankommt, werden wir Elm brauchen. Anleitung zur\nInstallation hier:\n\nhttps://guide.elm-lang.org/install/\n\nFalls Sie `nix` verwenden, dann ist `elm` bereits in der Entwicklungsumgebung\n(`nix develop`) vorhanden.\n\n# Bei Problemen\n\n... bitte Mike Sperber kontaktieren.\n\n# Literatur\n\n- [Blog Funktionale Programmierung](https://funktionale-programmierung.de/)\n- Michael Sperber, Herbert Klaeren: [Schreibe Dein Programm!](https://www.deinprogramm.de/sdp/)\n- Sandy Maguire: [Algebra-Driven Design](https://leanpub.com/algebra-driven-design)\n- Michael Pilquist, Rúnar Bjarnason, and Paul Chiusano [Functional Programming in Scala](https://www.manning.com/books/functional-programming-in-scala-second-edition)\n- Scott Wlaschin: [Domain Modeling Made Functional](https://pragprog.com/titles/swdddf/domain-modeling-made-functional/)\n\n\n\u003c!-- Local Variables: --\u003e\n\u003c!-- fill-column: 80 --\u003e\n\u003c!-- End: --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factive-group%2Ffunar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Factive-group%2Ffunar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Factive-group%2Ffunar/lists"}