Keli Language
  • Motivation
  • Showcase
  • Design goals
  • Features
  • Specification
    • Section 1: Introduction
    • Section 2: Lexical Structure
    • Section 3: Basic Expressions
    • Section 4: Magic Expressions
    • Section 5: Declarations
    • Section 6: Modules
    • Section 7: Type annotations
    • Section 8: Packages
  • Style guide
    • Naming conventions
  • Techniques
    • Singleton
    • Default values for functions
  • Installation
    • How to install Keli?
  • Tutorial
    • Creating a new package
  • CONTRIBUTE
    • Github source
  • Blog
    • Interval comparison operator for free!
Powered by GitBook
On this page
  • Purpose
  • Example

Was this helpful?

  1. Techniques

Singleton

PreviousNaming conventionsNextDefault values for functions

Last updated 6 years ago

Was this helpful?

Purpose

Sometimes, when we are creating libraries for other users, we might want to group similar functions together to improve user experience.

Example

Suppose we are creating a library that allow the user to access the file system. And we wish that our code looks like this:

=fs.open("Hello world.txt")

First, we need to create a with only a single tag:

FileSystem = choice.new

Then, create a constant alias:

fs = FileSystem.new

After that, we can proceed to define the functions we intend to expose:

(this FileSystem).open(filename String) = undefined
(this FileSystem).rename(oldname String) as(newname String) = undefined
(this FileSystem).delete(filename String) = undefined

And the client can use them as follows:

=fs.open("Hello world.txt")
=fs.rename("Jojo.md") as("Koko.md")
=fs.delete("/")
tagged union