Overview
The Data module provides:- Immutable classes: Value types with structural equality
- Tagged classes: Discriminated unions with
_tagfields - Tagged enums: Multi-variant unions with constructors
- Error classes: Yieldable error types for Effect integration
Data.Class
Base class for immutable data types with structural equality.Basic Usage
With Methods
Data.TaggedClass
Like Data.Class but automatically adds a_tag discriminator field.
Data.TaggedEnum
Define discriminated unions with multiple variants.Basic Tagged Enum
Pattern Matching
Type Guards
Error Classes
Yieldable error types that integrate with Effect’s error handling.Data.Error
Data.TaggedError
Schema Integration
Use Schema.TaggedErrorClass for runtime-validated errors:Working with Collections
HashMap
HashSet
Common Patterns
Domain Models
State Machines
ADT with Methods
Best Practices
- Use Data.Class for value types: Prefer immutable data classes over plain objects
- Use TaggedEnum for discriminated unions: Better than manual discriminated unions
- Leverage pattern matching: Use $match for exhaustive case handling
- Use TaggedError for domain errors: Integrate errors with Effect’s error handling
- Keep data classes simple: Move complex logic to separate functions
- Use structural equality: Take advantage of built-in equality for value types