Soplang Logo
Soplang

Data Types

Soplang types: integers, floating-point numbers, strings, booleans, lists, objects, and null values.

Data Types in Soplang

Soplang provides primitive values and collections. Declare a dynamic variable with door, or use a type keyword for an explicitly typed variable.

Primitive Types

Numbers

Soplang supports integers (abn) and binary floating-point numbers (jajab). Use door for a dynamic variable or abn/jajab for an explicitly typed declaration. See Numbers.

numbers.sop

numbers.sop
// Dynamic typing
door lambarka1 = 42       // abn
door lambarka2 = 3.14     // jajab

// Static typing
abn lambarka3 = 100
abn lambarka4 = -25

// Arithmetic
qor(lambarka1 + lambarka2)   // 45.14
qor(lambarka1 * lambarka3)   // 4200
qor(lambarka3 / lambarka1)   // 2.380952380952381

Strings

Strings (qoraal) are sequences of Unicode characters. Use double quotes ("...") or single quotes ('...'). Use f"...{name}..." to interpolate values, or join strings with +. See Strings.

strings.sop

strings.sop
// Dynamic typing
door magac1 = "Soplang"
door magac2 = 'Programming Language'

// Static typing
qoraal magac3 = "Soplang: Luuqadda Barnaamijyada ee Afka Soomaaliga"

// Concatenation
qor(magac1 + " - " + magac2)    // Soplang - Programming Language

// Length and methods
qor(dherer(magac1))             // 7
qor(magac1.weynee())     // SOPLANG
qor(magac1.yaree())    // soplang
qor(magac3.jar(0, 7))           // Soplang
qor(magac1[0])                  // S

// Join a number and a string
door version = 3
qor(magac1 + " v" + version)    // Soplang v3

Booleans

The boolean values are run (true) and been (false). Declare them with door or bool. Printing a boolean displays run or been.

booleans.sop

booleans.sop
// Dynamic typing
door waa_sax = run
door waa_qalad = been

// Static typing
bool waa_arday = run
bool waa_macalin = been

// Logical
qor(waa_sax && waa_qalad)  // been
qor(waa_sax || waa_qalad)  // run
qor(!waa_sax)              // been

// Comparison
door x = 10
door y = 20
qor(x > y)     // been
qor(x <= y)    // run
qor(x == 10)   // run
qor(x != y)    // run

Null

maran represents the absence of a value. Printing it, or inspecting it with nooc(), produces maran. A function that returns no value also returns maran.

maran.sop

maran.sop
door natiijo = maran
qor(natiijo)         // maran
qor(nooc(natiijo))   // maran

Collection Types

Collections hold multiple values.

Lists

Lists (teed) are ordered collections. Create a list using [], with either teed or door in its declaration. See Lists.

lists.sop

lists.sop
// Create lists
door tiro = [1, 2, 3, 4, 5]
teed magacyada = ["Cabdi", "Caasha", "Xasan", "Hodan"]
teed isku_dhafan = [1, "Soplang", run, 3.14]

// Read items (zero-indexed)
qor(tiro[0])          // 1
qor(magacyada[2])     // Xasan
qor(magacyada[-1])    // Hodan (negative indexes count from the end)

// Replace an item
tiro[0] = 10
qor(tiro)             // [10, 2, 3, 4, 5]

// List methods
tiro.geli(6)         // Append to the end
qor(tiro)             // [10, 2, 3, 4, 5, 6]

door ugu_dambeeyay = magacyada.saar()   // Remove the last item
qor(ugu_dambeeyay)    // Hodan
qor(magacyada)        // [Cabdi, Caasha, Xasan]

// Length
qor(magacyada.dherer())   // 3
qor(dherer(isku_dhafan))  // 4

Objects

Objects (walax) store string keys and their values. Create one using {}, with either walax or door in its declaration. See Objects.

objects.sop

objects.sop
// Create objects
door qof = {
  magac: "Cabdilaahi",
  da: 25,
  waa_arday: run
}

walax luuqad = {
  magac: "Soplang",
  sanadka: 2023,
  features: ["OOP", "Dynamic Typing", "Easy Syntax"]
}

// Read values with dot notation
qor(qof.magac)          // Cabdilaahi
qor(luuqad.features)    // [OOP, Dynamic Typing, Easy Syntax]

// Bracket notation with a string key
qor(qof["magac"])       // Cabdilaahi

// Replace and add properties
qof.da = 26
qof.degaan = "Muqdisho"
qor(qof)                // {da: 26, degaan: Muqdisho, magac: Cabdilaahi, waa_arday: run}

// Check for a key
qor(qof.leeyahay("magac"))    // run
qor(qof.leeyahay("luuqad"))   // been

// Methods
qor(qof.furayaal())          // [da, degaan, magac, waa_arday]
qor(qof.qiimayaal())         // [26, Muqdisho, Cabdilaahi, run]
qor(dherer(luuqad))      // 3

Checking Types

Use nooc() to inspect a value's type: abn, jajab, qoraal, bool, teed, walax, hawl, or maran. See Type Conversion.

On this page