npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@lambdulus/core

v0.0.8

Published

Core module for Lambdulus Project.

Downloads

7

Readme

This is Core module of project Lambdulus

Documentation of some features (will be growing with time)

SLI - Single Letter Identifiers

Lambdulus allows shorthand syntax for quicker typing. It looks for example like this: (λ x y z . y z x).

This is known as MultiLambda. This convention is purely syntactic sugar. It is simplification for: (λ x . (λ y . (λ z . (y z x) ))).

Hovewer this example can be written in even shorter way. With SLI enabled we can write it like: (λxyz.yzx) It means the same thing - this whitespace-omitting practice originated from the times teachers and students of PPA used to write on white-boards. On the white-board there is no simple way to properly write whitespaces - so we used to omit them altogether.

SLI - Rules:

  • identifier in SLI mode can be :

    • single alphabetic character like: a or b in following expression: + a b
    • it can also be single character followed be single numeric literal like c2
    • it can be sequence of alphabetic characters - like abc then it is understood like a b c
    • it can also be sequence of alphanumeric characters - in that case each numeric character must be preceeded by at least one alphabetic character and there must not be more than one numeric character standing immediately next to other - example of valid expression: A1BB2C3DDD - it is understood as: A1 B B2 C3 D D D

    Hovewer, Lambdulus also implements Macros - known abstractions. They are typically named with all upper-case letters. Like: ZERO or PREV and so on. These are also available in SLI mode.

    To succesfully use multi-char Macros in SLI mode they must be followed by whitespace. For example: ZERO 0 is valid SLI expression utilising Macro ZERO.

    On the other hand expression ZEROZERO 0 is not understood as ZERO ZERO 0 but as Z E R O Z E R O 0.

    Same goes for expressions as ZERO1ZERO2 0. It is understood as Z E R O1 Z E R O2 0.

    Finally expressions as ZERO12ZERO 0 would be understood as Z E R O12 Z E R O 0 - which is syntacticaly incorrect - because of two numeric characters following letter O. This will result in syntax error.