# Osprey Programming Language > One core, two flavors: write Osprey in C-style braces or ML-style layout with curry-by-default. Both lower to one canonical AST with typed algebraic effects, fibers, persistent collections, Hindley-Milner inference, and LLVM code generation. ## Documentation - [import (Keyword)](https://www.ospreylang.dev/docs/keywords/import/) - [Language Keywords](https://www.ospreylang.dev/docs/keywords/) - [Operators](https://www.ospreylang.dev/docs/operators/) - [fn (Keyword)](https://www.ospreylang.dev/docs/keywords/fn/) - [let (Keyword)](https://www.ospreylang.dev/docs/keywords/let/) - [match (Keyword)](https://www.ospreylang.dev/docs/keywords/match/) - [type (Keyword)](https://www.ospreylang.dev/docs/keywords/type/) - [/ (Division Operator)](https://www.ospreylang.dev/docs/operators/divide/) - [== (Equality Operator)](https://www.ospreylang.dev/docs/operators/equal/) - [>= (Greater Than or Equal Operator)](https://www.ospreylang.dev/docs/operators/greater-equal/) - [> (Greater Than Operator)](https://www.ospreylang.dev/docs/operators/greater-than/) - [<= (Less Than or Equal Operator)](https://www.ospreylang.dev/docs/operators/less-equal/) - [< (Less Than Operator)](https://www.ospreylang.dev/docs/operators/less-than/) - [- (Subtraction Operator)](https://www.ospreylang.dev/docs/operators/minus/) - [% (Modulo Operator)](https://www.ospreylang.dev/docs/operators/modulo/) - [* (Multiplication Operator)](https://www.ospreylang.dev/docs/operators/multiply/) - [!= (Inequality Operator)](https://www.ospreylang.dev/docs/operators/not-equal/) - [|> (Pipe Operator Operator)](https://www.ospreylang.dev/docs/operators/pipe-operator/) - [+ (Addition Operator)](https://www.ospreylang.dev/docs/operators/plus/) - [Bool (Type)](https://www.ospreylang.dev/docs/types/bool/) - [HttpResponse (Type)](https://www.ospreylang.dev/docs/types/httpresponse/) - [Int (Type)](https://www.ospreylang.dev/docs/types/int/) - [String (Type)](https://www.ospreylang.dev/docs/types/string/) - [false (Keyword)](https://www.ospreylang.dev/docs/keywords/false/) - [true (Keyword)](https://www.ospreylang.dev/docs/keywords/true/) - [ProcessHandle (Type)](https://www.ospreylang.dev/docs/types/processhandle/) - [Building Osprey Web Apps with React and WebAssembly](https://www.ospreylang.dev/docs/web-apps/) - [abs (Function)](https://www.ospreylang.dev/docs/functions/abs/) - [await (Function)](https://www.ospreylang.dev/docs/functions/await/) - [awaitProcess (Function)](https://www.ospreylang.dev/docs/functions/awaitprocess/) - [byteAt (Function)](https://www.ospreylang.dev/docs/functions/byteat/) - [byteLength (Function)](https://www.ospreylang.dev/docs/functions/bytelength/) - [Channel (Function)](https://www.ospreylang.dev/docs/functions/channel/) - [check (Function)](https://www.ospreylang.dev/docs/functions/check/) - [checkedAdd (Function)](https://www.ospreylang.dev/docs/functions/checkedadd/) - [checkedMul (Function)](https://www.ospreylang.dev/docs/functions/checkedmul/) - [checkedSub (Function)](https://www.ospreylang.dev/docs/functions/checkedsub/) - [cleanupProcess (Function)](https://www.ospreylang.dev/docs/functions/cleanupprocess/) - [codePointAt (Function)](https://www.ospreylang.dev/docs/functions/codepointat/) - [codePointWidth (Function)](https://www.ospreylang.dev/docs/functions/codepointwidth/) - [contains (Function)](https://www.ospreylang.dev/docs/functions/contains/) - [drop (Function)](https://www.ospreylang.dev/docs/functions/drop/) - [endsWith (Function)](https://www.ospreylang.dev/docs/functions/endswith/) - [expect (Function)](https://www.ospreylang.dev/docs/functions/expect/) - [fiber_yield (Function)](https://www.ospreylang.dev/docs/functions/fiber_yield/) - [fiberDone (Function)](https://www.ospreylang.dev/docs/functions/fiberdone/) - [filter (Function)](https://www.ospreylang.dev/docs/functions/filter/) - [fold (Function)](https://www.ospreylang.dev/docs/functions/fold/) - [forEach (Function)](https://www.ospreylang.dev/docs/functions/foreach/) - [forEachList (Function)](https://www.ospreylang.dev/docs/functions/foreachlist/) - [fromCodePoint (Function)](https://www.ospreylang.dev/docs/functions/fromcodepoint/) - [httpCloseClient (Function)](https://www.ospreylang.dev/docs/functions/httpcloseclient/) - [httpCreateClient (Function)](https://www.ospreylang.dev/docs/functions/httpcreateclient/) - [httpCreateServer (Function)](https://www.ospreylang.dev/docs/functions/httpcreateserver/) - [httpDelete (Function)](https://www.ospreylang.dev/docs/functions/httpdelete/) - [httpGet (Function)](https://www.ospreylang.dev/docs/functions/httpget/) - [httpGetResponse (Function)](https://www.ospreylang.dev/docs/functions/httpgetresponse/) - [httpListen (Function)](https://www.ospreylang.dev/docs/functions/httplisten/) - [httpPost (Function)](https://www.ospreylang.dev/docs/functions/httppost/) - [httpPut (Function)](https://www.ospreylang.dev/docs/functions/httpput/) - [httpResponseBody (Function)](https://www.ospreylang.dev/docs/functions/httpresponsebody/) - [httpResponseFree (Function)](https://www.ospreylang.dev/docs/functions/httpresponsefree/) - [httpResponseHeader (Function)](https://www.ospreylang.dev/docs/functions/httpresponseheader/) - [httpResponseStatus (Function)](https://www.ospreylang.dev/docs/functions/httpresponsestatus/) - [httpStopServer (Function)](https://www.ospreylang.dev/docs/functions/httpstopserver/) - [Built-in Functions](https://www.ospreylang.dev/docs/functions/) - [indexOf (Function)](https://www.ospreylang.dev/docs/functions/indexof/) - [input (Function)](https://www.ospreylang.dev/docs/functions/input/) - [intDiv (Function)](https://www.ospreylang.dev/docs/functions/intdiv/) - [isEmpty (Function)](https://www.ospreylang.dev/docs/functions/isempty/) - [join (Function)](https://www.ospreylang.dev/docs/functions/join/) - [jsonFree (Function)](https://www.ospreylang.dev/docs/functions/jsonfree/) - [jsonGet (Function)](https://www.ospreylang.dev/docs/functions/jsonget/) - [jsonLength (Function)](https://www.ospreylang.dev/docs/functions/jsonlength/) - [jsonParse (Function)](https://www.ospreylang.dev/docs/functions/jsonparse/) - [length (Function)](https://www.ospreylang.dev/docs/functions/length/) - [lines (Function)](https://www.ospreylang.dev/docs/functions/lines/) - [List (Function)](https://www.ospreylang.dev/docs/functions/list/) - [listAppend (Function)](https://www.ospreylang.dev/docs/functions/listappend/) - [listConcat (Function)](https://www.ospreylang.dev/docs/functions/listconcat/) - [listContains (Function)](https://www.ospreylang.dev/docs/functions/listcontains/) - [listGet (Function)](https://www.ospreylang.dev/docs/functions/listget/) - [listLength (Function)](https://www.ospreylang.dev/docs/functions/listlength/) - [listPrepend (Function)](https://www.ospreylang.dev/docs/functions/listprepend/) - [listReverse (Function)](https://www.ospreylang.dev/docs/functions/listreverse/) - [Map (Function)](https://www.ospreylang.dev/docs/functions/map-type/) - [map (Function)](https://www.ospreylang.dev/docs/functions/map/) - [mapContains (Function)](https://www.ospreylang.dev/docs/functions/mapcontains/) - [mapGet (Function)](https://www.ospreylang.dev/docs/functions/mapget/) - [mapKeys (Function)](https://www.ospreylang.dev/docs/functions/mapkeys/) - [mapLength (Function)](https://www.ospreylang.dev/docs/functions/maplength/) - [mapMerge (Function)](https://www.ospreylang.dev/docs/functions/mapmerge/) - [mapRemove (Function)](https://www.ospreylang.dev/docs/functions/mapremove/) - [mapSet (Function)](https://www.ospreylang.dev/docs/functions/mapset/) - [mapValues (Function)](https://www.ospreylang.dev/docs/functions/mapvalues/) - [padEnd (Function)](https://www.ospreylang.dev/docs/functions/padend/) - [padStart (Function)](https://www.ospreylang.dev/docs/functions/padstart/) - [parseFloat (Function)](https://www.ospreylang.dev/docs/functions/parsefloat/) - [parseInt (Function)](https://www.ospreylang.dev/docs/functions/parseint/) - [print (Function)](https://www.ospreylang.dev/docs/functions/print/) - [random (Function)](https://www.ospreylang.dev/docs/functions/random/) - [randomBelow (Function)](https://www.ospreylang.dev/docs/functions/randombelow/) - [range (Function)](https://www.ospreylang.dev/docs/functions/range/) - [readFile (Function)](https://www.ospreylang.dev/docs/functions/readfile/) - [recv (Function)](https://www.ospreylang.dev/docs/functions/recv/) - [repeat (Function)](https://www.ospreylang.dev/docs/functions/repeat/) - [replace (Function)](https://www.ospreylang.dev/docs/functions/replace/) - [reverse (Function)](https://www.ospreylang.dev/docs/functions/reverse/) - [send (Function)](https://www.ospreylang.dev/docs/functions/send/) - [sleep (Function)](https://www.ospreylang.dev/docs/functions/sleep/) - [spawnProcess (Function)](https://www.ospreylang.dev/docs/functions/spawnprocess/) - [split (Function)](https://www.ospreylang.dev/docs/functions/split/) - [startsWith (Function)](https://www.ospreylang.dev/docs/functions/startswith/) - [substring (Function)](https://www.ospreylang.dev/docs/functions/substring/) - [take (Function)](https://www.ospreylang.dev/docs/functions/take/) - [termClear (Function)](https://www.ospreylang.dev/docs/functions/termclear/) - [termCols (Function)](https://www.ospreylang.dev/docs/functions/termcols/) - [termHideCursor (Function)](https://www.ospreylang.dev/docs/functions/termhidecursor/) - [termMoveCursor (Function)](https://www.ospreylang.dev/docs/functions/termmovecursor/) - [termRawMode (Function)](https://www.ospreylang.dev/docs/functions/termrawmode/) - [termReadKey (Function)](https://www.ospreylang.dev/docs/functions/termreadkey/) - [termRows (Function)](https://www.ospreylang.dev/docs/functions/termrows/) - [termShowCursor (Function)](https://www.ospreylang.dev/docs/functions/termshowcursor/) - [test (Function)](https://www.ospreylang.dev/docs/functions/test/) - [toLowerCase (Function)](https://www.ospreylang.dev/docs/functions/tolowercase/) - [toString (Function)](https://www.ospreylang.dev/docs/functions/tostring/) - [toUpperCase (Function)](https://www.ospreylang.dev/docs/functions/touppercase/) - [trim (Function)](https://www.ospreylang.dev/docs/functions/trim/) - [trimEnd (Function)](https://www.ospreylang.dev/docs/functions/trimend/) - [trimStart (Function)](https://www.ospreylang.dev/docs/functions/trimstart/) - [websocketClose (Function)](https://www.ospreylang.dev/docs/functions/websocketclose/) - [websocketConnect (Function)](https://www.ospreylang.dev/docs/functions/websocketconnect/) - [websocketCreateServer (Function)](https://www.ospreylang.dev/docs/functions/websocketcreateserver/) - [websocketKeepAlive (Function)](https://www.ospreylang.dev/docs/functions/websocketkeepalive/) - [websocketSend (Function)](https://www.ospreylang.dev/docs/functions/websocketsend/) - [websocketServerBroadcast (Function)](https://www.ospreylang.dev/docs/functions/websocketserverbroadcast/) - [websocketServerListen (Function)](https://www.ospreylang.dev/docs/functions/websocketserverlisten/) - [words (Function)](https://www.ospreylang.dev/docs/functions/words/) - [writeFile (Function)](https://www.ospreylang.dev/docs/functions/writefile/) - [yield (Function)](https://www.ospreylang.dev/docs/functions/yield/) - [API Reference](https://www.ospreylang.dev/docs/) - [Installing Osprey](https://www.ospreylang.dev/docs/installation/) - [API Reference - Osprey Programming Language](https://www.ospreylang.dev/docs/stdlib/) - [Any (Type)](https://www.ospreylang.dev/docs/types/any/) - [Built-in Types](https://www.ospreylang.dev/docs/types/) - [checkAll (Function)](https://www.ospreylang.dev/docs/functions/checkall/) - [checkFalse (Function)](https://www.ospreylang.dev/docs/functions/checkfalse/) - [checkTrue (Function)](https://www.ospreylang.dev/docs/functions/checktrue/) - [expectAll (Function)](https://www.ospreylang.dev/docs/functions/expectall/) - [expectFalse (Function)](https://www.ospreylang.dev/docs/functions/expectfalse/) - [expectTrue (Function)](https://www.ospreylang.dev/docs/functions/expecttrue/) ## Blog Posts - [Modeling Web API Results with Pattern Matching](https://www.ospreylang.dev/blog/2025-01-10-building-web-apis-with-pattern-matching/) - [Memory Safety and Osprey's Runtime Boundary](https://www.ospreylang.dev/blog/2025-01-15-the-memory-safe-revolution/) - [Persistent Collections in Osprey: Immutable List and Map with Structural Sharing](https://www.ospreylang.dev/blog/2026-05-17-persistent-collections/) - [Osprey Flavors: Two Syntaxes, One Language](https://www.ospreylang.dev/blog/2026-06-30-osprey-flavors/) - [Perceus ARC in Osprey: Functional Memory Management](https://www.ospreylang.dev/blog/2026-07-23-perceus-arc-in-osprey/) - [SemVer Is All Lies. Please Stop](https://www.ospreylang.dev/blog/2026-07-25-semver-is-all-lies-please-stop/) - [Exceptions and Panics Were a Mistake: Better Error Handling](https://www.ospreylang.dev/blog/2026-07-25-exceptions-and-panics-were-a-mistake/) ## Navigation - Home: https://www.ospreylang.dev/ - Documentation: https://www.ospreylang.dev/docs/ - Blog: https://www.ospreylang.dev/blog/