Skip to content
This repository was archived by the owner on Apr 19, 2025. It is now read-only.

dpkass/HHU-Master-Functional-Programming-II

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

54 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Functional Programming II

Author: Taha El Amine Kassabi
Course: Functional Programming II (SSβ€―2023)
Instructor: Prof. Dr. Michael Leuschel
University: Heinrich Heine University DΓΌsseldorf (HHU)


πŸ“š Overview

This repository contains solutions for Exercises 00–06, REPL demos, and project-based assignments for the Functional Programming II course at HHU. Topics span from generative testing, specs, and transducers to async channels, Datomic, and Re-frame apps in ClojureScript.


πŸ“‚ Repository Structure

Exercises/
β”œβ”€β”€ 00-intro-code               β†’ Combinatorics, lazy streams, run-length encoding
β”œβ”€β”€ 01-test-check-material      β†’ Property-based testing with test.check, trampolines
β”œβ”€β”€ 02-spec                     β†’ clojure.spec definitions & generators
β”œβ”€β”€ 03-transducers              β†’ Stateless stream processing & chaining
β”œβ”€β”€ 04-async                    β†’ core.async with go blocks, mult, tap, timeout logic
β”œβ”€β”€ 05-datomic                  β†’ Querying graph databases using Datomic
β”œβ”€β”€ lerneinheit-reframe-toolsdeps/
β”‚   └── Re-frame Tic-Tac-Toe app in ClojureScript with full state/event handling
└── repl2022-vertiefung/       β†’ REPL-based walkthroughs of specs, test.check, ebt

Material/                      β†’ Lecture slides, tasks, solutions for all weeks
README.md                      β†’ Course overview (this file)

🧠 Topics Covered

Week Key Concepts
00 Lazy sequences, oscillators, run-length encode/decode
01 Property-based testing, trampolines, test.check
02 clojure.spec, predicates, functional design
03 Transducers, transformations, state-free composition
04 core.async, channels, go blocks, do-or-timeout macro
05 Datomic database queries, functional persistence
06 Re-frame SPA using subscriptions, events, and components

πŸ“ Setup

# Install Clojure CLI
brew install clojure/tools/clojure

# Start REPL (deps.edn or project.clj based)
clj
lein repl

ClojureScript + Re-frame requires:

npm install && npx shadow-cljs watch app

πŸš€ Usage

cd Exercises/01-test-check-material
lein test     # or run directly in REPL

Run a ClojureScript app (Tic Tac Toe):

cd Exercises/lerneinheit-reframe-toolsdeps/aufgaben
npm install
npx shadow-cljs watch app
# open localhost:3000 in browser

πŸ“… Notes

  • Exercises mix project-based tasks and REPL-driven live coding.
  • Functional patterns: immutability, stateless transforms, data-centric design.
  • Abstract Highlights: custom transducers, async macros, full-stack Clojure(Script).

About

βš™οΈ πŸ” Exercises & REPL demos from the Functional Programming II course (HHU, SSβ€―23) β€” Clojure & ClojureScript, from transducers and core.async to Re-frame and Datomic.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors