3.2.146 • Published 3 months ago

@thi.ng/dcons v3.2.146

Weekly downloads
3,158
License
Apache-2.0
Repository
github
Last release
3 months ago

dcons

npm version npm downloads Twitter Follow

This project is part of the @thi.ng/umbrella monorepo.

About

Double-linked lists with comprehensive set of operations (incl. optional self-organizing behaviors).

  • ES6 iterator support
  • Stack & queue API (front and/or back)
  • Random node access (read / write, O(n/2))
  • Node insertion (also w/ custom comparator)
  • Node finding (O(n))
  • Node swaps (O(1))
  • Reversing (O(n/2))
  • Rotation (left / right) (O(1))
  • Shuffling (configurable, support custom PRNG)
  • Sorting (Merge sort, w/ custom comparator)
  • Slicing (sublist copies)
  • Splicing (delete and/or insert)
  • release() (emptying, GC friendly)
  • concat() / into()
  • map() / filter() / reduce()
  • compare() / equiv()
  • toJSON() transform (-> array)

v2.3.0 adds the self-organizing list type SOL (an extension of DCons), which dynamically re-orders items based on certain accesses and offers these two built-in strategies:

  • defMTF() - moves currently accessed element to front of list
  • defTranspose() - swaps currently accessed element with its predecessor

Only the following operations will trigger the self-organizing behavior:

  • nth()
  • setNth()
  • setTail()
  • find()
  • findWith()

Btw. Also see @thi.ng/cache for more LRU, MRU implementations based on managed DCons impls...

Status

STABLE - used in production

Search or submit any issues for this package

Installation

yarn add @thi.ng/dcons

ES module import:

<script type="module" src="https://cdn.skypack.dev/@thi.ng/dcons"></script>

Skypack documentation

For Node.js REPL:

# with flag only for < v16
node --experimental-repl-await

> const dcons = await import("@thi.ng/dcons");

Package sizes (gzipped, pre-treeshake): ESM: 2.14 KB

Dependencies

API

Generated API docs

Head centric

  • cons()
  • first()
  • drop()
  • setHead()

Tail centric

  • into()
  • push()
  • peek()
  • pop()
  • setTail()

Random Access

  • .length
  • nth()
  • nthCell()
  • setNth()

Insertion

  • insertBefore()
  • insertAfter()
  • insertBeforeNth()
  • insertAfterNth()
  • insertSorted()

Finding

  • find()
  • findWith()

Structure

  • copy()
  • concat()
  • slice()
  • splice()
  • swap()
  • shuffle()
  • sort()
  • reverse()
  • rotateLeft()
  • rotateRight()
  • release()

TODO

Authors

Karsten Schmidt

If this project contributes to an academic publication, please cite it as:

@misc{thing-dcons,
  title = "@thi.ng/dcons",
  author = "Karsten Schmidt",
  note = "https://thi.ng/dcons",
  year = 2017
}

License

© 2017 - 2021 Karsten Schmidt // Apache Software License 2.0

3.2.146

3 months ago

3.2.145

4 months ago

3.2.143

4 months ago

3.2.144

4 months ago

3.2.142

4 months ago

3.2.141

5 months ago

3.2.140

5 months ago

3.2.139

5 months ago

3.2.138

5 months ago

3.2.137

5 months ago

3.2.136

5 months ago

3.2.135

6 months ago

3.2.134

6 months ago

3.2.133

7 months ago

3.2.132

7 months ago

3.2.131

8 months ago

3.2.114

12 months ago

3.2.116

11 months ago

3.2.115

12 months ago

3.2.118

11 months ago

3.2.117

11 months ago

3.2.119

11 months ago

3.2.125

10 months ago

3.2.124

10 months ago

3.2.127

9 months ago

3.2.126

9 months ago

3.2.121

10 months ago

3.2.120

11 months ago

3.2.123

10 months ago

3.2.122

10 months ago

3.2.129

8 months ago

3.2.128

9 months ago

3.2.130

8 months ago

3.2.113

1 year ago

3.2.112

1 year ago

3.2.111

1 year ago

3.2.110

1 year ago

3.2.109

1 year ago

3.2.108

1 year ago

3.2.107

1 year ago

3.2.106

1 year ago

3.2.105

1 year ago

3.2.104

1 year ago

3.2.103

1 year ago

3.2.102

1 year ago

3.2.101

1 year ago

3.2.100

1 year ago

3.2.99

1 year ago

3.2.98

1 year ago

3.2.97

1 year ago

3.2.95

1 year ago

3.2.94

1 year ago

3.2.96

1 year ago

3.2.93

1 year ago

3.2.92

1 year ago

3.2.91

1 year ago

3.2.90

1 year ago

3.2.89

1 year ago

3.2.86

1 year ago

3.2.85

1 year ago

3.2.88

1 year ago

3.2.87

1 year ago

3.2.84

1 year ago

3.2.83

1 year ago

3.2.82

1 year ago

3.2.81

1 year ago

3.2.79

1 year ago

3.2.78

1 year ago

3.2.80

1 year ago

3.2.77

2 years ago

3.2.76

2 years ago

3.2.75

2 years ago

3.2.68

2 years ago

3.2.67

2 years ago

3.2.69

2 years ago

3.2.60

2 years ago

3.2.62

2 years ago

3.2.61

2 years ago

3.2.64

2 years ago

3.2.63

2 years ago

3.2.66

2 years ago

3.2.65

2 years ago

3.2.71

2 years ago

3.2.70

2 years ago

3.2.73

2 years ago

3.2.72

2 years ago

3.2.74

2 years ago

3.2.46

2 years ago

3.2.48

2 years ago

3.2.47

2 years ago

3.2.49

2 years ago

3.2.57

2 years ago

3.2.56

2 years ago

3.2.59

2 years ago

3.2.58

2 years ago

3.2.51

2 years ago

3.2.50

2 years ago

3.2.53

2 years ago

3.2.52

2 years ago

3.2.55

2 years ago

3.2.54

2 years ago

3.2.45

2 years ago

3.2.44

2 years ago

3.2.42

2 years ago

3.2.43

2 years ago

3.2.37

2 years ago

3.2.36

2 years ago

3.2.39

2 years ago

3.2.38

2 years ago

3.2.40

2 years ago

3.2.41

2 years ago

3.2.35

2 years ago

3.2.34

2 years ago

3.2.31

2 years ago

3.2.33

2 years ago

3.2.32

2 years ago

3.2.26

2 years ago

3.2.28

2 years ago

3.2.27

2 years ago

3.2.29

2 years ago

3.2.30

2 years ago

3.2.24

3 years ago

3.2.23

3 years ago

3.2.25

3 years ago

3.2.20

3 years ago

3.2.22

3 years ago

3.2.21

3 years ago

3.2.17

3 years ago

3.2.16

3 years ago

3.2.19

3 years ago

3.2.18

3 years ago

3.2.15

3 years ago

3.2.14

3 years ago

3.2.13

3 years ago

3.2.6

3 years ago

3.2.9

3 years ago

3.2.8

3 years ago

3.2.7

3 years ago

3.2.12

3 years ago

3.2.11

3 years ago

3.2.10

3 years ago

3.2.2

3 years ago

3.2.5

3 years ago

3.2.4

3 years ago

3.2.3

3 years ago

3.2.1

3 years ago

3.2.0

3 years ago

3.1.3

4 years ago

3.1.2

4 years ago

3.1.1

4 years ago

3.1.0

4 years ago

3.1.4

3 years ago

3.0.9

4 years ago

3.0.8

4 years ago

3.0.4

4 years ago

3.0.7

4 years ago

3.0.3

4 years ago

3.0.1

4 years ago

3.0.0

4 years ago

2.3.34

4 years ago

2.3.33

4 years ago

2.3.32

4 years ago

2.3.31

4 years ago

2.3.29

4 years ago

2.3.30

4 years ago

2.3.28

4 years ago

2.3.27

4 years ago

2.3.26

4 years ago

2.3.25

4 years ago

2.3.24

4 years ago

2.3.23

4 years ago

2.3.22

4 years ago

2.3.21

4 years ago

2.3.20

4 years ago

2.3.19

4 years ago

2.3.18

4 years ago

2.3.17

4 years ago

2.3.16

4 years ago

2.3.13

4 years ago

2.3.15

4 years ago

2.3.11

4 years ago

2.3.10

4 years ago

2.3.9

4 years ago

2.3.8

4 years ago

2.3.7

4 years ago

2.3.6

4 years ago

2.3.5

4 years ago

2.3.4

4 years ago

2.3.3

5 years ago

2.3.2

5 years ago

2.3.1

5 years ago

2.3.0

5 years ago

2.2.32

5 years ago

2.2.31

5 years ago

2.2.30

5 years ago

2.2.28

5 years ago

2.2.29

5 years ago

2.2.27

5 years ago

2.2.26

5 years ago

2.2.24

5 years ago

2.2.25

5 years ago

2.2.23

5 years ago

2.2.22

5 years ago

2.2.21

5 years ago

2.2.20

5 years ago

2.2.19

5 years ago

2.2.18

5 years ago

2.2.17

5 years ago

2.2.16

5 years ago

2.2.15

5 years ago

2.2.14

5 years ago

2.2.13

5 years ago

2.2.12

5 years ago

2.2.11

5 years ago

2.2.10

5 years ago

2.2.9

5 years ago

2.2.8

5 years ago

2.2.7

5 years ago

2.2.6

5 years ago

2.2.5

5 years ago

2.2.2

5 years ago

2.2.1

5 years ago

2.2.0

6 years ago

2.1.6

6 years ago

2.1.5

6 years ago

2.1.4

6 years ago

2.1.3

6 years ago

2.1.2

6 years ago

2.1.1

6 years ago

2.1.0

6 years ago

2.0.19

6 years ago

2.0.18

6 years ago

2.0.17

6 years ago

2.0.16

6 years ago

2.0.15

6 years ago

2.0.14

6 years ago

2.0.13

6 years ago

2.0.12

6 years ago

2.0.11

6 years ago

2.0.10

6 years ago

2.0.9

6 years ago

2.0.8

6 years ago

2.0.7

6 years ago

2.0.6

6 years ago

2.0.5

6 years ago

2.0.4

6 years ago

2.0.3

6 years ago

2.0.2

6 years ago

2.0.1

6 years ago

2.0.0

6 years ago

1.1.23

6 years ago

1.1.22

6 years ago

1.1.21

6 years ago

1.1.20

6 years ago

1.1.19

6 years ago

1.1.18

6 years ago

1.1.17

7 years ago

1.1.16

7 years ago

1.1.15

7 years ago

1.1.14

7 years ago

1.1.13

7 years ago

1.1.12

7 years ago

1.1.11

7 years ago

1.1.10

7 years ago

1.1.9

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.7-alpha.1

7 years ago

1.1.7-alpha.0

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.7

7 years ago

1.0.6

7 years ago

1.0.5

7 years ago

1.0.4

7 years ago

1.0.3

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.3.6

7 years ago

0.3.5

7 years ago

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.19

7 years ago

0.1.18

7 years ago

0.1.17

7 years ago

0.1.16

7 years ago

0.1.15

7 years ago

0.1.14

7 years ago

0.1.13

7 years ago

0.1.12

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago

0.0.4

8 years ago

0.0.3

8 years ago

0.0.2

8 years ago

0.0.1

8 years ago