- 1. Overview
- 2. Introduction
- 2.1. Delay and Force
- 2.2. Pattern Matching
- 2.3. Plutarch Terms
- 2.3.1. Plutarch Constants
- 2.3.2. Plutarch Lambdas
- 2.4. Plutarch Types
- 2.5. Untyped PlutusCore
- 2.6. Dev Guide
- 2.7. Run
- 2.8. Troubleshooting
3. Examples
- 3.1. Basic
- 3.2. Validator
- 4. Concepts
- 4.1. Data and Scott Encoding
- 4.2. Generic Programming
- 4.3. Haskell Synonym
- 4.4. Hoisting
- 4.5. What is the s?
- 5. Types
- 5.1. PAsData
- 5.2. PBool
- 5.3. PBuiltinList
- 5.4. PBuiltinPair
- 5.5. PByteString
- 5.6. PData
- 5.7. PDataSum and PDataRecord
- 5.8. PInteger
- 5.9. PList
- 5.10. PString
- 5.11. PUnit
- 6. Typeclasses
- 6.1. PLiftable
- 6.2. PEq and POrd
- 6.3. PIntegral
- 6.4. PIsData
- 6.5. PIsDataRepr and PDataFields
- 6.6. PListLike
- 6.7. PlutusType, PCon, and PMatch
- 6.8. PTryFrom
- 7. Usage
- 7.1. Avoid Work Duplication Using plet
- 7.2. Conditionals
- 7.3. Deriving for Newtypes
- 7.4. Deriving with Generics
- 7.5. DoSyntax with QualifiedDo
- 7.6. DoSyntax with TermCont
- 7.7. Raising Errors
- 7.8. Recursion
- 7.9. Tracing
- 7.10. Unsafe Functions
- 8. Tricks
- 8.1. Difference between pcon and pconstant
- 8.2. Don't Duplicate Work
- 8.3. makeIsDataIndexed, HaskellADTs, and PIsDataRepr
- 8.4. Optimizing Unhoistable Lambdas
- 8.5. Plutarch Functions Strict
- 8.6. Prefer Matching on pmatch Result Immediately
- 8.7. Prefer Plutarch Functions
- 8.8. Prefer Statically Building Constants
- 8.9. Representation of Plutarch Type
- 8.10. Responsibility of Evaluation in Haskell Functions
- 8.11. Using Haskell Level Functions
- 8.12. Working with Bound Fields