Strict Programming Language

Strict Programming Language

  • Games
  • Playground
  • SCrunch
  • Performance
  • Docs
  • VS Code
  • Projects
  • Blog
  • GitHub

›Language

Documentation

  • Overview
  • The VS Code Experience
  • Getting Started
  • Built with Strict
  • Cheat Sheet

Language

  • Types
  • Members and Variables
  • Decimals and Exact Values
  • Methods
  • Tests
  • Statements and Expressions
  • If
  • For
  • Lists and Dictionaries
  • Errors
  • Keywords
  • Grammar

Rules

  • Coding Style
  • Code Validations
  • Naming

Source

  • Base Types
  • Architecture
  • Examples
  • Machine Learning

More

  • Using APIs
  • Concurrency
  • Microservices

Keywords

Strict needs very few keywords. Most code can only be written in one way, so swapping arguments or changing the style usually means the code no longer compiles, or at least doesn't behave the same way. You will understand any .strict code you read. Writing it is harder because of all the strict rules.

Keywords and operator words can't be used as names.

Declarations

KeywordMeaningSee
hasMember that is set once when the instance is createdMembers and Variables
constantMember or variable computed only from constants, always optimized awayMembers and Variables
letVariable that doesn't changeMembers and Variables
mutableMember or variable that may change (parameters never do)Members and Variables
withConstraint on a member or parameterTypes
fromCustom constructorTypes

Control flow

KeywordMeaningSee
if, elseConditional blocks, else if chains and selector ifIf
thenSingle-line conditional condition then a else b and selector casesIf
forThe only loop, also the for method that makes a type iterableFor
as long asRepeat a for while its condition is trueFor
inContainment (is in), and naming a loop variableFor
returnLeave a method early with a valueMethods

Operators

KeywordMeaning
is, is notEquality, also used by every test
is in, is not inContainment
and, or, xor, notLogic, as English words instead of C symbols
toConversion: 5 to Text, and conversion methods like to Number
+ - * / % ^ < > <= >=Arithmetic and comparison
=Assignment. Equality is always is
()Lists, which includes method parameters and call arguments. An empty () is never written

Implicit names

NameMeaning
valueThe instance in a method, the current element in a for loop, the member value in a with constraint
indexThe position in a for loop, starting at 0
outerThe value from outside the current for loop
true, falseThe two Boolean values
NoneThe state of an optional value that was never set, see or None

Base types

The base types in the repository root are always available, everything else is found by name. Base Types describes each of them:

Any, Boolean, Byte, BytesReader, BytesWriter, Character, Closeable, Dictionary, Directory, Enum, Error, ErrorWithValue, File, Generic, HashCode, Iterator, Length, Library, List, Logger, Method, Mutable, Name, Number, Path, Process, ProcessResult, Range, Stacktrace, Text, TextReader, TextWriter, Type, Variable

Decimal precision

Step in a numeric constraint declares decimal precision: has price Number with Step 0.01. Add Floor or Ceiling for directed rounding. It is a constraint form rather than a separate decimal base type. See Decimals.

Package structure

A Strict package is a folder:

  • Every type is a .strict file. Subfolders are packages of their own.
  • A README.md explains the package and should show how to use it. This is the only place for explanations, because code has no comments.
  • .editorconfig sets up any editor for tabs and the Strict style.

See Grammar for the complete syntax.

Last updated on 10/17/2026 by Benjamin Nitschke
← ErrorsGrammar →
Strict Programming Language
Docs
The VS Code ExperienceGetting StartedBuilt with StrictLanguage GuideCheat SheetCoding Style
Source
Base TypesArchitectureExamplesQwen3 and Machine LearningC and C# Interop
More
BlogGitHubIssuesVS Code ExtensionWebsite SourceStar
Copyright © 2026 strict-lang