From 4a6ad25256f4512573a87fe6f1a54fbabc86c2f6 Mon Sep 17 00:00:00 2001 From: Marshall Lochbaum Date: Sun, 12 Dec 2021 11:29:59 -0500 Subject: Some links to the section on mutability --- docs/doc/paradigms.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/doc/paradigms.html') diff --git a/docs/doc/paradigms.html b/docs/doc/paradigms.html index a0305aa9..38093372 100644 --- a/docs/doc/paradigms.html +++ b/docs/doc/paradigms.html @@ -10,7 +10,7 @@

When programming in BQN, I almost always use array, tacit, and (slightly impure) functional styles, and encapsulate code in medium or large projects using namespaces. I sometimes use object-oriented or imperative programming in addition to these.

Typing

BQN is a dynamically typed language with a coarse type system that only distinguishes types when the difference is blindingly obvious. There is a single numeric type and a single unicode character type. A fast implementation such as CBQN will check to see when it can represent the data with a smaller type than the one offered by the language. BQN usually avoids implicit type conversion, with the exception that many primitives automatically convert atoms to unit arrays. The fact that a data value can be applied as a function to return itself could also be considered an implicit conversion.

-

BQN has no "pointer" or "reference" type, and uses automatic memory management. Its data types are immutable while operations and namespaces are mutable; mutable data can create reference loops, which the implementation must account for in garbage collection but the programmer doesn't have to worry about.

+

BQN has no "pointer" or "reference" type, and uses automatic memory management. Its data types are immutable while operations and namespaces are mutable; mutable data can create reference loops, which the implementation must account for in garbage collection but the programmer doesn't have to worry about.

Dynamic types and garbage collection introduce overhead relative to a statically-typed or manually managed language. The impact of this overhead can be greatly reduced with array programming, because an array of numbers or characters can be stored as a single unit of memory and processed with functions specialized to its element type.

Styles

BQN is designed for array programming. The array is its only built-in collection type and it has many primitives designed to work with arrays.

-- cgit v1.2.3