PLDB
Languages Features Calendar CSV Lists Blog About Sponsor Add Language
GitHub icon

Namespaces

Namespaces

Namespaces are a feature.

Most languages have implicit scopes/namespaces, but some also allow for explicit namespacing.


Languages with Namespaces include C++, C#, TypeScript, F#, Slope

Example from C++:
#include <iostream> using namespace std; // Variable created inside namespace namespace first { int val = 500; } // Global variable int val = 100; // Ways to do it: https://en.cppreference.com/w/cpp/language/namespace namespace ns_name { declarations } inline namespace ns_name { declarations } namespace { declarations } ns_name::name using namespace ns_name; using ns_name::name; namespace name = qualified-namespace ; namespace ns_name::inline(since C++20)(optional) name { declarations }
Example from C#:
namespace MyNamespace { class MyClass { public void MyMethod() { System.Console.WriteLine("Creating my namespace"); } } }
Example from TypeScript:
// Typescript even supports splitting namespaces across multiple files: // Validation.ts namespace Validation { export interface StringValidator { isAcceptable(s: string): boolean; } } // LettersOnlyValidator.ts /// <reference path="Validation.ts" /> namespace Validation { const lettersRegexp = /^[A-Za-z]+$/; export class LettersOnlyValidator implements StringValidator { isAcceptable(s: string) { return lettersRegexp.test(s); } } }
Example from F#:
namespace Widgets type MyWidget1 = member this.WidgetName = "Widget1" module WidgetsModule = let widgetName = "Widget2"
Example from Slope:
(ns-create 'hello-world) (ns-define 'hello-world 'print (lambda () (display "hello world!\n"))) (hello-world::print)
multiline-strings-feature.html 路 namespace-feature.html 路 sourcemaps-feature.html

View source

PLDB - Build the next great programming language 路 v2022 Day 33 Docs Build Acknowledgements Traffic Today Traffic Trends Mirrors GitHub feedback@pldb.com