jorgef/fsharpworkshop
53.1
Adequate · 24 September 2026
296
lines of production code
F#
primary language
5
measurements over time
What this system is
This system is an educational workshop for learning F\# programming, structured into four progressive modules covering types, functions, discriminated unions, and data binding. It provides a complete learning environment with application code, interactive scripts, and unit tests for each module. The project is built on .NET Core/Standard with modern SDK-style project files and cross-platform support.
Features
Added F\# demo script for basic language features
A new F\# script file (Demo.fsx) was added to the Module2 directory. It demonstrates core language constructs including variable binding, function definition, tuple and record types, partial application, and function composition, serving as a practical example for users.
Module2 · high confidence
Added F\# demo scripts for Module 3
Added a new F\# script (Demo.fsx) to Module 3, providing code examples for basic variable assignment, tuples, records, function composition, and unit-of-measure conversions.
Module3 · high confidence
Added Module 2 application layer with customer and purchase logic
New files were added to the Module 2 application directory, introducing the core domain types and business logic for the v3 version of the module. The \Types.fs\ file defines a \Customer\ record, while \Functions.fs\ implements logic to promote customers to VIP status based on purchase amounts and to calculate purchase totals. A \Try.fsx\ script was also added to demonstrate the usage of these functions.
Module2/Application · high confidence
Added Module3 application layer with customer upgrade logic
Introduced the application layer for Module3, defining the Customer type and associated functions to handle customer upgrades. The new code includes logic to promote customers to VIP status based on purchase amounts, retrieve purchase data, and increase customer credit, providing a complete workflow for customer status management.
Module3/Application · high confidence
Added Module4 Application source code and data
Introduced the complete source code for the Module4 application, including type definitions (Customer, PersonalDetails, Notifications), business logic functions (credit increase, VIP promotion, adult checks), a service layer, and a Try.fsx script for interactive exploration. The change also includes a Data.json file containing sample customer purchase data and a paket.references file for dependency management.
Module4/Application · high confidence
Added initial F\# module structure with types, functions, and tests
Introduced the foundational F\# code for Module 1, including the Types and Functions modules, a Try script for interactive exploration, a Demo script demonstrating basic F\# features like tuples and records, and a Tests file with placeholder unit tests for customer promotion and purchase logic.
Module1 · high confidence
Completed versions of Modules 1–4 for the v3 workshop
The Completed directory now contains the full, finished source code for all four workshop modules. Module 1 introduces basic F\# types, functions, and tests. Module 2 adds higher-order functions and function composition. Module 3 introduces discriminated unions, pattern matching, and unit-of-measure types. Module 4 adds JSON data binding with FSharp.Data, a console application entry point, and a service layer. Each module includes application code, interactive Try scripts, demo scripts, and unit tests.
Completed · high confidence
Behavioural changes
1 commit (0 fixes) modifying .ionide
A change to existing behaviour in .ionide — 1 commit, 1 file.
.ionide · low confidence · unverified
Updated F\# demo scripts with new examples and fixes
Added new F\# demo scripts (Demo.fsx) in Module4, including examples for basic types, function composition, unit of measure conversions, list filtering, and object-oriented programming. The file also includes a JSON provider example using FSharp.Data. A fix was applied to the type provider path for demo.fsx and try.fsx.
Module4 · medium confidence
Updated workshop structure and prerequisites
The workshop is now organized into four distinct modules covering bindings, functions, high-order functions, options, and type providers, each with corresponding application and test projects. The setup has been updated to require .NET Core SDK, Visual Studio Code with the Ionide extension, and Mono for Mac/Linux users. The README has been expanded to include detailed module descriptions, pre-requisites, and feedback from past attendees.
(repo-wide) · high confidence
Test coverage
Added unit tests for Module 4; Added unit tests for customer credit and upgrade logic.
Dependencies
Migrate project files to .NET SDK-style format
The project files for the completed and module directories have been converted to the modern .NET SDK-style format. This migration standardizes the build system, enabling simpler project configurations and cross-platform compatibility. Specifically, application projects now target .NET Standard 2.0, while test projects target .NET Core 3.0 and reference testing libraries such as xUnit, Microsoft.NET.Test.Sdk, and Unquote.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 54 → 53 (-0.8)
- Rubric changed (rubric-2026.08.19 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 93 → 93 (+0.0)
- Architecture 100 → 100 (+0.0)
- Maturity 48 → 48 (+0.0)
- Readiness 34 → 34 (-0.1)
- Security 94 → 88 (-5.5)
Resolved (9)
- Duplicated block (11 lines × 2) (Module4/Application/Functions.fs)
- Duplicated block (13 lines × 2) (Module3/Application/Functions.fs)
- Duplicated block (22 lines × 2) (Module4/Application/Types.fs)
- No exposed public API
- Test reliability not included
- The pre-requisites list links to .NET Core SDK, VS Code, Ionide, Mono (Mac only), and Mono/F# Interactive (Linux only). The last entry 'Mono, F# Compiler and F# Interactive (Linux only)' is cut by the clip marker before any further content. (README.md)
- complexity unreadable for .fs — churn × complexity hotspots could not be measured
- no production source files with tracked history to analyse
- no production source files with tracked history to analyse
New (8)
- Documentation: no installation or build instructions (README.md)
- Documentation: no usage examples (README.md)
- Duplicated block (15 lines × 2) (Module3/Application/Functions.fs)
- Duplicated block (21 lines × 2) (Completed/Module4/Application/Functions.fs)
- Duplicated block (23 lines × 2) (Completed/Module4/Application/Types.fs)
- End-of-life runtime: .NET netcoreapp3.0
- No ADRs found
- Outdated: FSharp.Core
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
jorgef/fsharpworkshop was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 24 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit f06b9e0089bb2d13e953b30fdcd1a1a01adf1698 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-923689c465cf.