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 🙏

© 2026 – Pkg Stats / Ryan Hefner

lambda-calculus-in-js

v1.0.1

Published

Lambda Calculus with JavaScript. Pure function programming.

Downloads

19

Readme


description: von Benjamin Brodwolf & Pascal Andermatt

Lambda Kalkül für praktisches JavaScript

Was ist Lambda Kalkül?

Lambda Kalkül ****ist ein formales System, in der mathematische Logik zur Berechnung und Untersuchung von Funktionen gilt. Es ist ein universelles Berechnungsmodel , mit dem jede Turing-Maschine simuliert werden kann. Es wurde von dem Mathematiker Alonzo Church in den 1930er Jahren als Teil seiner Forschung zu den Grundlagen der Mathematik eingeführt.

Lambda-Kalkül hat im Grunde nichts in sich. Es hat nur drei Dinge: Variablenbindung, einen Weg, Funktionen zu bauen und einen Weg, Funktionen anzuwenden. Es hat keine anderen Kontrollstrukturen, keine anderen Datentypen, gar nichts.

Was ist JavaScript?

JavaScript ist die Programmiersprache die hauptsächlich im Web verwendet wird und durch den Browser ausgeführt wird. JavaScript integriert dabei viele funktionale Aspekte, stellt aber auch einiges an Funktionalität aus der objektorientierten Programmierung zur Verfügung. Es besteht also die Möglichkeit, in vielen verschiedenen Paradigmen zu programmieren.

Lambda Kalkül & JavaScript

Das Konzept ist, Lambda Kalkül mit der Programmiersprache JavaScript zu verbinden. Das heisst, in nur rein funktionalen Paradigma Program-Codes zu schreiben (purely functional). JavaScript bietet dazu Sprachelemente wie Closures und Funktionen. Sie machen es möglich, dass wir in JavaScript funktional programmieren können. Es gewährleistet die Konzepte der Seiteneffektfreiheit, Zustandslosigkeit, Variablenbindung statt Zuweisung, Funktionskomposition und Funktionen höherer Ordnung (high order functions) zu schreiben.

Forschungsarbeit

Ziel der Arbeit ist es, neue Konstruktionen aus dem untypisierten Lambda Kalkül, mit der Programmiersprache JavaScript zu bauen. Diese Konstruktionen haben das Ziel, JavaScript Applikationen robuster, sicherer und wartbarer zu machen. Bei diesen Konstruktionen setzen wir komplett auf die Werte der reinen funktionalen Programmierung:

  • Reinheit (pure functions): Funktionen ohne Seiteneffekte (wie mathematische Funktionen)
  • Unveränderlichkeit (immutable Datastructure): __ Unveränderliche Datenstrukturen
  • Iteration: Eine Iteration ohne Ausdrücke wie for, while oder do Schleifen
  • Fehlerbehandlung ohne throw Ausdruck
  • Funktionen höherer Ordnung (high order functions).
  • Zustandslosigkeit

Abgrenzung von objektorientierter Programmierung:
Es werden keine objektorientierte Konzepte wie Klassen oder Vererbung usw. verwendet.

Inhaltsverzeichnis

Eine Forschungsarbeit: Projekt (IP5) und Bacherlorarbeit (IP6) von

                              **Benjamin Brodwolf**          &        **Pascal Andermatt**  
                                        [GitHub](http://github.com/BenjaminBrodwolf)                                         [GitHub](https://github.com/PascalAndermatt)

Einen besonderes Dankschön an unseren Projektbetreuer, Auftraggeber, Supporter und Inspirator:
Prof. Dierk König****