Skip to content
Paul Lipkowski edited this page Apr 8, 2023 · 38 revisions

Lamed (v.0.5.2) is an upcoming version of RPN Calculator, which was released on December 18, 2021. It is named after the twelfth letter of Hebrew alphabet – lamed (ל).

Details and features

  • Name: Lamed
  • Version Code: 0.5.2
  • Version Type: Generation 3 build
  • Release Date: December 18, 2021
  • Stable precedessor: Khaf (v.0.5.1)
  • Stable successor: Mem (v.0.5.3)
  • Language: FreePascal
  • Lines of code: 13720
  • Number of functions: 530 + user-defined ones
  • Maximum number of instructions: de facto no limit (depends how many you can put in AnsiString, which has limit of either 2,147,483,647 (32 bit) or 9,223,372,036,854,775,807 chars (64 bit))
  • Number of entity types: 9 (10 with quasitypes)
  • Number of packages: 6
  • Tested on:
    • systems: Windows (2000, Vista, 7, 8.1, Win10), Linux (Ubuntu, Debian, Manjaro)
    • architectures: i386/x86 (32 bit), amd64/x64 (64 bit)

Code and binaries

  • You can download the binaries/executables of Lamed here.
  • You can find its source code here.

List of confirmed changes

First release

  • all changes included in the updates of 0.5.1
  • Packages now require @use() to be used.
  • Rebuild of console app core
  • Reintroduction of flags
  • for-each const loop
  • syntax rework – RPN does not require spaces between (), [] and {} – allow e.g. if (true) {true}
    • Note that it does not apply between }{, )(, ][if(true){true} is not allowed
  • Vanilla functions:
    • shl, shr
    • numsort
    • callWhile, callUntil
    • swapAt, swapAt2
  • GUI Application:
    • Extended language support: Afrikaans, Croatian, French, Dutch, German, Macedonian, Norwegian, Portuguese, Russian, Serbian, Slovene, Swedish
    • More advanced file management
    • Source code window and output window are resizable
    • Switch that allows the output window be cleared after each run or not
    • Ability to run script in an external terminal window
  • Allow $t $f filter with functions instead of logical expressions (for $t being either array or string)
  • Allow $t $f cut with functions instead of logical expressions (for $t being either array or string)
  • Array package functions:
    • cut
    • cutZeros, cutEmptyStrings, cutNulls
    • distinctNumbers, distinctStrings, distinct
    • reduceStdDev
    • first, last
    • crushBy
    • pad, padRight, padLeft, padEntities, padEntitiesRight, padEntitiesLeft, padSpaces, padSpacesRight, padSpacesLeft, padNulls, padNullsRight, padNullsLeft, padZeros, padZerosRight, padZerosLeft, padEmptyStrings, padEmptyStringsRight, padEmptyStringsLeft
    • randomFrom
    • reduceGCD, reduceLCM
    • sort
    • trim, trimLeft, trimRight, trimNulls, trimNullsRight, trimNullsLeft, trimEntities, trimEntitiesRight, trimEntitiesLeft
  • Date package functions:
    • isInRange, isDateInRange, isTimeInRange
    • addWeek
  • Math package functions:
    • arcsec, arccsc
    • sgn/sign – sign function
    • inverse hyperbolic functions – arsinh, arcosh, artanh, arcoth, arsech, arcsch
    • moment, quantile
    • tertile, quartile, octile, decile, hexadecile, percentile
    • Beta distribution functions: distBeta, funcBeta, randomBeta, genBeta
    • Fisher-Snedecor (F) distribution functions: distF, funcF, randomF, genF
    • factorize, primeDistribution, leastPrimeDivisor
    • randomIntRange, randomRealRange
    • euclidean and its alias bezoutCoefs
    • erf, erfc
    • fomega, fOmega (and countDistinctFactors, countAllFactors as aliases)
    • fLiouville and fLambda as alias
    • isSquareFree
  • String package functions:
    • padChars, padCharsRight, padCharsLeft
    • trimChars, trimCharsRight, trimCharsLeft
    • quoted, apostrophed, enclosed
    • map
    • reduce, reduceLeft, reduceLeftFromFirst, reduceRight, reduceRightFromLast
    • filter, cut
    • first, last
    • delete, copies, divide, removeMatching, translate
    • compare, isEmpty
  • Move String.system to Console.system
  • Console package functions:
    • delay (for Unix)
    • UserName, UserHome
    • HostName
    • OSName, OSDistribution (and its alias OSDist), OSVersion
    • CPUBits, CPUArchitecture (and its alias CPUArch)
    • UserShell (for Unix only)
  • Directives of @fixprecision(X), @maxprecision(X)
  • Arithmetics on strings
  • rebuild fit for variables
  • Runtime params rebuild
  • fix bugs and errors
    • "." bug
    • multidimensional arrays issue
    • arrays in arrays issue
    • T distribution bug

Update #1 of February 11, 2022

  • fix String.quoted bug
  • fix quotes parsing bug
  • fix Array.getAt and String.getAt bug
  • fix xdg-terminal bug
  • add mate-terminal support
  • add functions: String.quoted2, String.apostrophed2

Update #2 of March 4, 2022

  • fix if-else bug with entities instead of instruction blocks
  • add functions: Math.coprimes, Math.modularPower, Math.modPower, Math.modPow, Math.modularInverse, Math.modularMulInverse, Math.modMulInv, Math.isCarmichael
  • add item index in for-each loop – for ( index item : $T ) and for ( const index item : $T )
  • add Unix scripts support (shebangs)
  • add script that installs rpn to /bin for all users

Clone this wiki locally