Comparison of programming languages (algebraic data type)

This article compares the syntax for defining and instantiating an algebraic data type (ADT), sometimes also referred to as a tagged union, in various programming languages.

Examples of algebraic data types

ATS

In ATS, an ADT may be defined with:[1][2]

datatype tree =
	| Empty of () 
	| Node of (int, tree, tree)

And instantiated as:

val my_tree = Node(42, Node(0, Empty, Empty), Empty)

Additionally in ATS dataviewtypes are the linear type version of ADTs for the purpose of providing in the setting of manual memory management with the convenience of pattern matching.[3] An example program might look like:

(* Alternatively one can use the datavtype keyword *)
dataviewtype int_or_string_vt (bool) =
	| String_vt (true) of string
	| Int_vt (false) of int

(* Alternatively one can use the vtypedef keyword *)
viewtypedef Int_or_String_vt = [b: bool] int_or_string_vt b

fn print_int_or_string (i_or_s: Int_or_String_vt): void =
	case+ i_or_s of
	(* ~ indicates i_or_s will be implicitly freed in this case *)
	| ~String_vt(s) => println!(s)
	(* @ indicates i_or_s must be explicitly freed in this case *)
	| @Int_vt(i) => begin
			$extfcall(void, "fprintf", stdout_ref, "%d\n", i);
			free@i_or_s;
		end

implement main0 (): void = let
	val string_hello_world = String_vt "Hello, world!"
	val int_0 = Int_vt 0
in
	print_int_or_string string_hello_world;
	print_int_or_string int_0;
	(* which prints:
	Hello, world!
	0
	*)
end

Ceylon

In Ceylon, an ADT may be defined with:[4]

abstract class Tree()
    of empty | Node {}

object empty
    extends Tree() {}

final class Node(shared Integer val, shared Tree left, shared Tree right)
    extends Tree() {}

And instantiated as:

value myTree = Node(42, Node(0, empty, empty), empty);

Clean

In Clean, an ADT may be defined with:[5]

:: Tree
  = Empty
  | Node Int Tree Tree

And instantiated as:

myTree = Node 42 (Node 0 Empty Empty) Empty

Coq

In Coq, an ADT may be defined with:[6]

Inductive tree : Type :=
| empty : tree
| node : nat -> tree -> tree -> tree.

And instantiated as:

Definition my_tree := node 42 (node 0 empty empty) empty.

C++

In C++, an ADT may be defined with:[7]

struct Empty final {};

struct Node final {
    int value;
    std::unique_ptr<std::variant<Empty, Node>> left;
    std::unique_ptr<std::variant<Empty, Node>> right;
};

using Tree = std::variant<Empty, Node>;

And instantiated as:

Tree myTree { Node{
    42,
    std::make_unique<Tree>(Node{
        0,
        std::make_unique<Tree>(),
        std::make_unique<Tree>()
    }),
    std::make_unique<Tree>()
} };

Dart

In Dart, an ADT may be defined with:[8]

sealed class Tree {}

final class Empty extends Tree {}

final class Node extends Tree {
  final int value;
  final Tree left, right;

  Node(this.value, this.left, this.right);
}

And instantiated as:

final myTree = Node(42, Node(0, Empty(), Empty()), Empty());

Elm

In Elm, an ADT may be defined with:[9]

type Tree
  = Empty
  | Node Int Tree Tree

And instantiated as:

myTree = Node 42 (Node 0 Empty Empty) Empty

F#

In F#, an ADT may be defined with:[10]

type Tree =
    | Empty
    | Node of int * Tree * Tree

And instantiated as:

let myTree = Node(42, Node(0, Empty, Empty), Empty)

F*

In F*, an ADT may be defined with:[11]

type tree =
  | Empty : tree
  | Node : value:nat -> left:tree -> right:tree -> tree

And instantiated as:

let my_tree = Node 42 (Node 0 Empty Empty) Empty

Free Pascal

In Free Pascal (in standard ISO Pascal mode[12]), an ADT may be defined with variant records:[13]

{$mode ISO}
program MakeTree;

type TreeKind = (Empty, Node);
  PTree = ^Tree;
  Tree = record
    case Kind: TreeKind of
      Empty: ();
      Node: (
        Value: Integer;
        Left, Right: PTree;
      );
  end;

And instantiated as:

var MyTree: PTree;

begin new(MyTree, Node);
  with MyTree^ do begin
    Value := 42;
    new(Left,  Node);
    with Left^ do begin
      Value := 0;
      new(Left,  Empty);
      new(Right, Empty);
    end;
    new(Right, Empty);
  end;
end.

Haskell

In Haskell, an ADT may be defined with:[14]

data Tree
    = Empty
    | Node Int Tree Tree

And instantiated as:

myTree = Node 42 (Node 0 Empty Empty) Empty

Haxe

In Haxe, an ADT may be defined with:[15]

enum Tree {
	Empty;
	Node(value:Int, left:Tree, right:Tree);
}

And instantiated as:

var myTree = Node(42, Node(0, Empty, Empty), Empty);

Hope

In Hope, an ADT may be defined with:[16]

data tree == empty
          ++ node (num # tree # tree);

And instantiated as:

dec mytree : tree;
--- mytree <= node (42, node (0, empty, empty), empty);

Idris

In Idris, an ADT may be defined with:[17]

data Tree
    = Empty
    | Node Nat Tree Tree

And instantiated as:

myTree : Tree
myTree = Node 42 (Node 0 Empty Empty) Empty

Java

In Java, an ADT may be defined with:[18]

sealed interface Tree {
    record Empty() implements Tree {}
    record Node(int value, Tree left, Tree right) implements Tree {}
}

And instantiated as:

var myTree = new Tree.Node(
    42,
    new Tree.Node(0, new Tree.Empty(), new Tree.Empty()),
    new Tree.Empty()
);

Julia

In Julia, an ADT may be defined with:[19]

struct Empty
end

struct Node
    value::Int
    left::Union{Empty, Node}
    right::Union{Empty, Node}
end

const Tree = Union{Empty, Node}

And instantiated as:

mytree = Node(42, Node(0, Empty(), Empty()), Empty())

Kotlin

In Kotlin, an ADT may be defined with:[20]

sealed class Tree {
    object Empty : Tree()
    data class Node(val value: Int, val left: Tree, val right: Tree) : Tree()
}

And instantiated as:

val myTree = Tree.Node(
    42,
    Tree.Node(0, Tree.Empty, Tree.Empty),
    Tree.Empty,
)

Limbo

In Limbo, an ADT may be defined with:[21]

Tree: adt {
	pick {
	Empty =>
	Node =>
		value: int;
		left: ref Tree;
		right: ref Tree;
	}
};

And instantiated as:

myTree := ref Tree.Node(
	42,
	ref Tree.Node(0, ref Tree.Empty(), ref Tree.Empty()),
	ref Tree.Empty()
);

Mercury

In Mercury, an ADT may be defined with:[22]

:- type tree
    --->    empty
    ;       node(int, tree, tree).

And instantiated as:

:- func my_tree = tree.
my_tree = node(42, node(0, empty, empty), empty).

Miranda

In Miranda, an ADT may be defined with:[23]

tree ::=
    Empty
    | Node num tree tree

And instantiated as:

my_tree = Node 42 (Node 0 Empty Empty) Empty

Nemerle

In Nemerle, an ADT may be defined with:[24]

variant Tree
{
    | Empty
    | Node {
        value: int;
        left: Tree;
        right: Tree;
    }
}

And instantiated as:

def myTree = Tree.Node(
    42,
    Tree.Node(0, Tree.Empty(), Tree.Empty()),
    Tree.Empty(),
);

Nim

In Nim, an ADT may be defined with:[25]

type
  TreeKind = enum
    tkEmpty
    tkNode

  Tree = ref TreeObj

  TreeObj = object
    case kind: TreeKind
    of tkEmpty:
      discard
    of tkNode:
      value: int
      left, right: Tree

And instantiated as:

let myTree = Tree(kind: tkNode, value: 42,
                  left: Tree(kind: tkNode, value: 0,
                             left: Tree(kind: tkEmpty),
                             right: Tree(kind: tkEmpty)),
                  right: Tree(kind: tkEmpty))

OCaml

In OCaml, an ADT may be defined with:[26]

type tree =
  | Empty
  | Node of int * tree * tree

And instantiated as:

let my_tree = Node (42, Node (0, Empty, Empty), Empty)

Opa

In Opa, an ADT may be defined with:[27]

type tree =
  { empty } or
  { node, int value, tree left, tree right }

And instantiated as:

my_tree = {
  node,
  value: 42,
  left: {
    node,
    value: 0,
    left: { empty },
    right: { empty }
  },
  right: { empty }
}

OpenCog

In OpenCog, an ADT may be defined with:[28]

PureScript

In PureScript, an ADT may be defined with:[29]

data Tree
  = Empty
  | Node Int Tree Tree

And instantiated as:

myTree = Node 42 (Node 0 Empty Empty) Empty

Python

In Python, an ADT may be defined with:[30][31]

from __future__ import annotations
from dataclasses import dataclass

@dataclass
class Empty:
    pass

@dataclass
class Node:
    value: int
    left: Tree
    right: Tree

Tree = Empty | Node

And instantiated as:

my_tree = Node(42, Node(0, Empty(), Empty()), Empty())

Racket

In Typed Racket, an ADT may be defined with:[32]

(struct Empty ())
(struct Node ([value : Integer] [left : Tree] [right : Tree]))
(define-type Tree (U Empty Node))

And instantiated as:

(define my-tree (Node 42 (Node 0 (Empty) (Empty)) (Empty)))

Reason

Reason

In Reason, an ADT may be defined with:[33]

type Tree =
  | Empty
  | Node(int, Tree, Tree);

And instantiated as:

let myTree = Node(42, Node(0, Empty, Empty), Empty);

ReScript

In ReScript, an ADT may be defined with:[34]

type rec Tree =
  | Empty
  | Node(int, Tree, Tree)

And instantiated as:

let myTree = Node(42, Node(0, Empty, Empty), Empty)

Rust

In Rust, an ADT may be defined with:[35]

enum Tree {
    Empty,
    Node(i32, Box<Tree>, Box<Tree>),
}

And instantiated as:

let my_tree = Tree::Node(
    42,
    Box::new(Tree::Node(0, Box::new(Tree::Empty), Box::new(Tree::Empty)),
    Box::new(Tree::Empty),
);

Scala

Scala 2

In Scala 2, an ADT may be defined with:[citation needed]

sealed abstract class Tree extends Product with Serializable

object Tree {
  final case object Empty extends Tree
  final case class Node(value: Int, left: Tree, right: Tree)
      extends Tree
}

And instantiated as:

val myTree = Tree.Node(
  42,
  Tree.Node(0, Tree.Empty, Tree.Empty),
  Tree.Empty
)

Scala 3

In Scala 3, an ADT may be defined with:[36]

enum Tree:
  case Empty
  case Node(value: Int, left: Tree, right: Tree)

And instantiated as:

val myTree = Tree.Node(
  42,
  Tree.Node(0, Tree.Empty, Tree.Empty),
  Tree.Empty
)

Standard ML

In Standard ML, an ADT may be defined with:[37]

datatype tree =
    EMPTY
  | NODE of int * tree * tree

And instantiated as:

val myTree = NODE (42, NODE (0, EMPTY, EMPTY), EMPTY)

Swift

In Swift, an ADT may be defined with:[38]

enum Tree {
    case empty
    indirect case node(Int, Tree, Tree)
}

And instantiated as:

let myTree: Tree = .node(42, .node(0, .empty, .empty), .empty)

TypeScript

In TypeScript, an ADT may be defined with:[39]

type Tree =
  | { kind: "empty" }
  | { kind: "node"; value: number; left: Tree; right: Tree };

And instantiated as:

const myTree: Tree = {
  kind: "node",
  value: 42,
  left: {
    kind: "node",
    value: 0,
    left: { kind: "empty" },
    right: { kind: "empty" },
  },
  right: { kind: "empty" },
};

Visual Prolog

In Visual Prolog, an ADT may be defined with:[40]

domains
    tree = empty; node(integer, tree, tree).

And instantiated as:

constants
    my_tree : tree = node(42, node(0, empty, empty), empty).

Zig

In Zig, an ADT may be defined with:[41]

const Tree = union(enum) {
    empty,
    node: struct {
        value: i32,
        left: *const Tree,
        right: *const Tree,
    },
};

And instantiated as:

const my_tree: Tree = .{ .node = .{
    .value = 42,
    .left = &.{ .node = .{
        .value = 0,
        .left = &.empty,
        .right = &.empty,
    } },
    .right = &.empty,
} };

References

  1. ^ "Recursively Defined Datatypes".
  2. ^ "Example: Binary Search Tree".
  3. ^ "Dataviewtypes as Linear Datatypes".
  4. ^ "Eclipse Ceylon: Union, intersection, and enumerated types". ceylon-lang.org. Archived from the original on 2022-12-26. Retrieved 2021-11-29.
  5. ^ "Clean 2.2 Ref Man". clean.cs.ru.nl. Retrieved 2021-11-29.
  6. ^ "Inductive types and recursive functions — Coq 8.14.1 documentation". coq.inria.fr. Retrieved 2021-11-30.
  7. ^ "std::variant - cppreference.com". en.cppreference.com. Retrieved 2021-12-04.
  8. ^ "Patterns". dart.dev. Retrieved 2023-09-28.
  9. ^ "Custom Types · An Introduction to Elm". guide.elm-lang.org. Retrieved 2021-11-29.
  10. ^ cartermp. "Discriminated Unions - F#". docs.microsoft.com. Retrieved 2021-11-29.
  11. ^ "Inductive types and pattern matching — Proof-Oriented Programming in F* documentation". www.fstar-lang.org. Retrieved 2021-12-06.
  12. ^ "Mode iso". wiki.freepascal.org. Retrieved 2024-05-26.
  13. ^ "Record types". www.freepascal.org. Retrieved 2021-12-05.
  14. ^ "4 Declarations and Bindings". www.haskell.org. Retrieved 2021-12-07.
  15. ^ "Enum Instance". Haxe - The Cross-platform Toolkit. Retrieved 2021-11-29.
  16. ^ "Defining your own data types". 2011-08-10. Archived from the original on 2011-08-10. Retrieved 2021-12-03.
  17. ^ "Types and Functions — Idris2 0.0 documentation". idris2.readthedocs.io. Retrieved 2021-11-30.
  18. ^ "JEP 409: Sealed Classes". openjdk.java.net. Retrieved 2021-12-05.
  19. ^ "Types · The Julia Language". docs.julialang.org. Retrieved 2021-12-03.
  20. ^ "Sealed classes | Kotlin". Kotlin Help. Retrieved 2021-11-29.
  21. ^ Stanley-Marbell, Phillip (2003). Inferno Programming with Limbo. Wiley. pp. 67–71. ISBN 978-0470843529.
  22. ^ "The Mercury Language Reference Manual: Discriminated unions". www.mercurylang.org. Retrieved 2021-12-07.
  23. ^ "An Overview of Miranda". www.cs.kent.ac.uk. Archived from the original on 2021-12-04. Retrieved 2021-12-04.
  24. ^ "Basic Variants · rsdn/nemerle Wiki". GitHub. Retrieved 2021-12-03.
  25. ^ "Nim Manual". nim-lang.org. Retrieved 2021-11-29.
  26. ^ "OCaml - The OCaml language". ocaml.org. Retrieved 2021-12-07.
  27. ^ "The type system · MLstate/opalang Wiki". GitHub. Retrieved 2021-12-07.
  28. ^ "Type constructor - OpenCog". wiki.opencog.org. Retrieved 2021-12-07.
  29. ^ purescript/documentation, PureScript, 2021-11-24, retrieved 2021-11-30
  30. ^ PEP 484 – Type Hints, Python
  31. ^ "PEP 604 – Allow writing union types as X | Y | peps.python.org". Python Enhancement Proposals (PEPs). Retrieved 2024-11-05.
  32. ^ "2 Beginning Typed Racket". docs.racket-lang.org. Retrieved 2021-12-04.
  33. ^ "Variants · Reason". reasonml.github.io. Retrieved 2021-11-30.
  34. ^ "Variant | ReScript Language Manual". ReScript Documentation. Retrieved 2021-11-30.
  35. ^ "enum - Rust". doc.rust-lang.org. Retrieved 2021-11-29.
  36. ^ "Algebraic Data Types". Scala Documentation. Retrieved 2021-11-29.
  37. ^ "Defining datatypes". homepages.inf.ed.ac.uk. Retrieved 2021-12-01.
  38. ^ "Enumerations — The Swift Programming Language (Swift 5.5)". docs.swift.org. Retrieved 2021-11-29.
  39. ^ "Documentation - TypeScript for Functional Programmers". www.typescriptlang.org. Retrieved 2021-11-29.
  40. ^ "Language Reference/Domains - wiki.visual-prolog.com". wiki.visual-prolog.com. Retrieved 2021-12-07.
  41. ^ "Documentation - The Zig Programming Language". ziglang.org. Retrieved 2024-12-16.

Read other articles:

ILS International Launch Services, Inc.IndustriLuar Angkasa dan Pertahanan MiliterDidirikan1995KantorpusatBerpusat di Reston, Virginia, Amerika-Rusia joint ventureTokohkunciPhil Slack, PresidentProdukroket Proton MKaryawan60<Situs webwww.ilslaunch.com International Launch Service (ILS) adalah salah satu perusahaan provider utama dalam pelayanan peluncuran satelit komunikasi global.[1] ILS berkantor pusat di Reston, Washington DC, Amerika Serikat.[1] Deskripsi ILS ini mempro...

 

Bangku dan meja kayu di depan sebuah warung makan. Bangku atau lincak adalah sebuah mebel tempat duduk berkaki serupa kursi dengan dudukan lebih panjang.[1] Bangku biasanya diduduki untuk beristirahat, bersantap, berkencan, atau menongkrong sambil mengobrol. Bangku umumnya diletakkan di tempat-tempat seperti kawasan pejalan kaki, tempat wisata, pertokoan, tempat makan, maupun taman kota. Bangku umumnya terbuat dari logam dan kayu (terkadang dikombinasikan juga dengan logam). Namun ter...

 

American businessman and philanthropist A. Felix du PontBornAlexis Felix du Pont(1879-04-14)April 14, 1879Wilmington, DelawareDiedJune 29, 1948(1948-06-29) (aged 69)Rehoboth Beach, DelawareResting placeOld Saint Anne's Church CemeteryOther namesFelix du PontEducationUniversity of Pennsylvania (1901)Occupation(s)Businessman, philanthropistKnown forVice-President, E. I. du Pont de Nemours & Co., Founder, St. Andrew's SchoolPolitical partyDemocraticBoard member ofDuPont, ...

Cet article est une ébauche concernant un musée et la mer. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Musée national de la MarineInformations généralesType Musée national (d)Site web www.musee-marine.frCollectionsCollections Collections maritimesLabel Musée de FranceBâtimentProtection  Classé MH (1980)LocalisationLocalisation Paris FranceCoordonnées 48° 51′ 43″ N...

 

Piala Champions Eropa 1963–1964The Praterstadion in Vienna hosted the final.Informasi turnamenJadwalpenyelenggaraan10 September 1963 (1963-09-10) – 27 Mei 1964 (1964-05-27)Jumlahtim peserta31Hasil turnamenJuara Inter Milan (gelar ke-1)Tempat kedua Real MadridStatistik turnamenJumlahpertandingan61Jumlah gol212 (3,48 per pertandingan)Jumlahpenonton1.945.888 (31.900 per pertandingan)Pencetak golterbanyakVladica Kovačević (Partizan)Sandro Mazzola (Inter Milan)Ferenc Pusk...

 

Sporting event delegationCambodia at the2008 Summer OlympicsFlag of CambodiaIOC codeCAMNOCNational Olympic Committee of CambodiaWebsitewww.noccambodia.org (in Khmer and English)in BeijingCompetitors4 in 2 sportsFlag bearer Hem BuntingMedals Gold 0 Silver 0 Bronze 0 Total 0 Summer Olympics appearances (overview)195619601964196819721976–199219962000200420082012201620202024 Cambodia competed in the 2008 Summer Olympics, held in Beijing, People's Republic of China from August 8 to Aug...

Regency of Indonesia Regency in Central Java, IndonesiaBanyumas Regency Kabupaten BanyumasRegencyAlun-alun Banyumas Coat of armsMotto: Rarasing Rasa Wiwaraning PrajaLocation within Central JavaBanyumas RegencyLocation in Java and IndonesiaShow map of JavaBanyumas RegencyBanyumas Regency (Indonesia)Show map of IndonesiaCoordinates: 7°36′42″S 109°21′13″E / 7.61167°S 109.35361°E / -7.61167; 109.35361CountryIndonesiaProvinceCentral JavaCapitalPurwokertoGov...

 

Material made by fusing powdered glass to a substrate by firing Gothic châsse; 1185–1200; champlevé enamel over copper gilded; height: 17.7 cm (7.0 in), width: 17.4 cm (6.9 in), depth: 10.1 cm (4.0 in) Vitreous enamel, also called porcelain enamel, is a material made by fusing powdered glass to a substrate by firing, usually between 750 and 850 °C (1,380 and 1,560 °F). The powder melts, flows, and then hardens to a smooth, durable vitreous coating...

 

Location of Mackinac County in Michigan This is a list of the National Register of Historic Places listings in Mackinac County, Michigan. This is intended to be a complete list of the properties and districts on the National Register of Historic Places in Mackinac County, Michigan, United States. Latitude and longitude coordinates are provided for many National Register properties and districts; these locations may be seen together in a map.[1] There are 27 properties and districts l...

Nursery CrymeAlbum studio karya GenesisDirilis12 November 1971DirekamAugust 1971, Trident Studios, LondonGenreProgressive rockDurasi39:29LabelCharismaProduserJohn AnthonyKronologi Genesis Trespass(1970)Trespass1970 Nursery Cryme(1971) Foxtrot(1972)Foxtrot1972 Nursery Cryme adalah album studio ketiga dari grup musik progressive rock asal Inggris, Genesis. Album ini direkam dan dirilis pada tahun 1971. Album ini adalah album pertama Genesis dengan formasi klasiknya (yang sering dianggap seb...

 

Americans of Ethiopian birth or descent This article needs additional citations for verification. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.Find sources: Ethiopian Americans – news · newspapers · books · scholar · JSTOR (May 2021) (Learn how and when to remove this message) Ethiopian AmericansTotal population261,741 (Ethiopia-born, 2016)[1][2]68,001 (Ethiop...

 

هذه المقالة يتيمة إذ تصل إليها مقالات أخرى قليلة جدًا. فضلًا، ساعد بإضافة وصلة إليها في مقالات متعلقة بها. (أبريل 2015) وسام البودي معلومات شخصية الاسم الكامل وسام أبو بكر البودي الميلاد 6 مارس 1980 (44 سنة)  مركز اللعب حارس مرمى  الجنسية ليبيا  الرقم 28 تعديل مصدري - تعديل ...

شيكاغو فاير الاسم الكامل نادي حريق شيكاغو لكرة القدمChicago Fire Football Club اللقب الماكينة الحمراء - The Red Machine الحريق - The Fire الاسم المختصر شيكاغو فاير تأسس عام 1997 (منذ 27 سنة) الملعب تويوتا بارك(السعة: 20,000) البلد  الولايات المتحدة الدوري دوري النخبة الأمريكي الإدارة الرئيس أندرو ها�...

 

Last King of Portugal from 1908 to 1910 This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations. (October 2011) (Learn how and when to remove this message) Manuel IIManuel II, c. 1909King of PortugalReign1 February 1908 – 5 October 1910Acclamation6 May 1908PredecessorCarlos ISuccessorMonarchy abolishedPrime Ministers See list João FrancoFrancisco Ferreira do A...

 

American blues harmonica player (1942–1987) Paul ButterfieldButterfield in 1979Background informationBirth namePaul Vaughn ButterfieldBorn(1942-12-17)December 17, 1942Chicago, Illinois, U.S.DiedMay 4, 1987(1987-05-04) (aged 44)Los Angeles, California, U.S.GenresBluesblues-rockOccupation(s)MusicianInstrument(s)HarmonicavocalsYears active1963–1987LabelsElektraBearsvilleAmherstFormerly ofThe Paul Butterfield Blues BandMusical artist Paul Vaughn Butterfield (December 17, 1942 –...

Pub in Lancashire, England Shard Riverside InnThe building in 2020Former namesShard HouseShard Bridge InnThe Shard InnAlternative namesThe ShardGeneral informationTypePublic houseAddressOld Bridge LaneTown or cityHambleton, LancashireCountryEnglandCoordinates53°51′47″N 2°57′32″W / 53.86299580°N 2.958874055°W / 53.86299580; -2.958874055Completed1766 (258 years ago) (1766)Other informationNumber of rooms23Parkingon-siteWebsitewww.shardriversidei...

 

American judge (born 1965) Julia K. MunleyJudge of the United States District Court for the Middle District of PennsylvaniaIncumbentAssumed office November 7, 2023Appointed byJoe BidenPreceded byRobert D. MarianiJudge of the Court of Common Pleas of Lackawanna County, 45th districtIn officeJuly 1, 2016 – November 7, 2023Appointed byTom WolfPreceded byRobert Mazzoni Personal detailsBornJulia Kathleen Munley[1]1965 (age 58–59)[2]Carbondale, Pennsylvania...

 

Muara Sungai Nith, Skotlandia Muara Río de la Plata di perbatasan Uruguay dan Argentina Muara Sungai Amazon, Brazilia Muara atau kuala (bahasa Inggris: estuary) adalah badan air setengah tertutup di wilayah pesisir, dengan satu sungai atau lebih yang mengalir masuk ke dalamnya, serta terhubung bebas dengan laut terbuka.[1] Kebanyakan muara sungai ke laut membentuk estuari; namun tidak demikian jika bermuara ke danau, waduk, atau ke sungai yang lebih besar. Muara merupakan suatu m...

For the airport located within the suburb, see Brisbane Airport. Suburb of Brisbane, Queensland, AustraliaBrisbane AirportBrisbane, QueenslandSkygate Village and busBrisbane AirportCoordinates27°23′36″S 153°06′48″E / 27.3933°S 153.1133°E / -27.3933; 153.1133 (Brisbane Airport (centre of suburb))Population22 (2021 census)[1] • Density0.659/km2 (1.71/sq mi)Postcode(s)4008Area33.4 km2 (12.9 sq mi)Time zoneAE...

 

SwarovskiLogo Negozio Swarovski a Richmond Hill, Ontario Stato Austria Forma societariasocietà per azioni Fondazione1895 Fondata daDaniel Swarovski, Armand Kosman, Franz Weis Sede principaleWattens Persone chiave Markus Langes-Swarovski Robert Buchbauer Nadja Swarovski SettoreGioielli di lusso, ottica ProdottiCristallo piombato (Lead crystal), prodotti ottici Fatturato2,6 miliardi di € (2016) Dipendenti27.000 (2016) Sito webwww.swarovski.com/ e www.swarovski.com/fr-FR/ Modifica dati s...