hn-classics/_stories/2010/11056704.md

1108 lines
55 KiB
Markdown
Raw Normal View History

---
created_at: '2016-02-08T06:53:40.000Z'
title: What's new in purely functional data structures since Okasaki? (2010)
url: http://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki
author: r4um
points: 154
story_text:
comment_text:
num_comments: 42
story_id:
story_title:
story_url:
parent_id:
created_at_i: 1454914420
_tags:
- story
- author_r4um
- story_11056704
objectID: '11056704'
---
2018-02-23 18:19:40 +00:00
[Source](https://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki "Permalink to reference request - What's new in purely functional data structures since Okasaki? - Theoretical Computer Science Stack Exchange")
# reference request - What's new in purely functional data structures since Okasaki? - Theoretical Computer Science Stack Exchange
[ ][1]
#### Stack Exchange Network
Stack Exchange network consists of 172 Q&A communities including [Stack Overflow][2], the largest, most trusted online community for developers to learn, share their knowledge, and build their careers.
[Visit Stack Exchange][3]
### [current community][4]
* [help][5] [chat][6]
[
Theoretical Computer Science ][4]
* [
Theoretical Computer Science Meta ][7]
### your communities
[Sign up][8] or [log in][9] to customize your list.
### [more stack exchange communities][10]
[company blog][11]
* [ Tour Start here for a quick overview of the site ][12]
* [ Help Center Detailed answers to any questions you might have ][5]
* [ Meta Discuss the workings and policies of this site ][7]
* [ About Us Learn more about Stack Overflow the company ][13]
* [ Business Learn more about hiring developers or posting ads with us ][14]
1. [ ][15]
2. [ ][16]
3. [ ][17]
4. [ ][18]
[Log In][19] [Sign Up][20]
[ Theoretical Computer Science ][4]
* [ Questions ][21]
* [ Tags ][22]
* [ Users ][23]
* [ Badges ][24]
* [ Unanswered ][25]
* [Ask Question][26]
_
Theoretical Computer Science Stack Exchange is a question and answer site for theoretical computer scientists and researchers in related fields. Join them; it only takes a minute:
[Sign up][27]
**Here's how it works:**
1. Anybody can ask a question
2. Anybody can answer
3. The best answers are voted up and rise to the top
# [What's new in purely functional data structures since Okasaki?][28]
| ----- |
|
up vote 528 down vote [favorite][1]
**689**
|
Since Chris Okasaki's 1998 book "Purely functional data structures", I haven't seen too many new exciting purely functional data structures appear; I can name just a few:
* [IntMap][29] (also invented by Okasaki in 1998, but not present in that book)
* [Finger trees][30] (and their generalization over monoids)
There are also some interesting ways of implementing already known datastructures, such as using "nested types" or "generalized algebraic datatypes" to ensure tree invariants.
Which other new ideas have appeared since 1998 in this area?
[reference-request][31] [big-list][32] [ds.data-structures][33] [functional-programming][34]
|
[share][35]|cite|[improve this question][36]
|
asked Sep 21 '10 at 8:04
![][37]
[jkff][38]
4,19431631
|
|
| |
* 18
Nice question. I just had a student asking me about this, and didn't know the answer.  [Suresh Venkat♦][39] Sep 21 '10 at 8:07
* This is OK for here, but you might get better answers on Stack Overflow. If you ask there, be sure and link to the discussion here.  [Charles Stewart][40] Sep 21 '10 at 13:01
* 3
Well the Haskell Reddit has seen this so there will be some good answers coming in from there too but excellent question. Just being halfway through Okasaki's book I was wondering the same think myself. +1  [Robert Massaioli][41] Sep 21 '10 at 22:52
* 8
[This inspired me to ask a related question][42].  [jbapple][43] Sep 22 '10 at 18:44
* 3
[Okasaki's blog post from 2008 for the 10th anniversary of the book][44]  [Kaveh][45] Jan 4 '16 at 12:33
 |  show **1** more comment
|
## 6 Answers 6
[ active][46] [ oldest][47] [ votes][48]
| ----- |
|
up vote 528 down vote accepted
|
### New purely functional data structures published since 1998:
* 2001: [**Ideal Hash Trees][49], and its 2000 predecessor, [Fast And Space Efficient Trie Searches][50], by Phil Bagwell**: Apparently used as a fundamental building block in Clojure's standard library.
* 2001: [**A Simple Implementation Technique for Priority Search Queues][51], by Ralf Hinze**: a really simple and beautiful technique for implementing this important datastructure (useful, say, in the Dijkstra algorithm). The implementation is particularly beautiful and readable due to heavy use of "view patterns".
* 2002: [**Bootstrapping one-sided flexible arrays][52], by Ralf Hinze**: Similar to Okasaki's random-access lists, but they can be tuned to alter the time tradeoff between `cons` and indexing.
* 2003: [**New catenable and non-catenable deques][53], by Radu Mihaescu and Robert Tarjan**: A new take on some older work (by Kaplan and Tarjan) that Okasaki cites (The [most recent version of Kaplan & Tarjan's work was published in 2000][54]). This version is simpler in some ways.
* 2005: **Maxiphobic heaps ([paper][55] and [code][56]), by Chris Okasaki**: Presented not as a new, more efficient structure, but as a way to teach priority queues.
* 2006: [**Purely Functional Worst Case Constant Time Catenable Sorted Lists][57], by Gerth Stølting Brodal, Christos Makris, and Kostas Tsichlas**: Answers an outstanding question of Kaplan and Tarjan by demonstrating a structure with O(lg n) insert, search, and delete and O(1) concat.
* 2008: [**Confluently Persistent Tries for Efficient Version Control][58], by Erik D. Demaine, Stefan Langerman, and Eric Price**: Presents several data structures for tries that have efficient navigation and modification near the leaves. Some are purely functional. Others actually improve a long-standing data structure by Dietz et al. for fully persistent (but not confluently persistent or purely functional) arrays. This paper also presente **purely functional link-cut trees**, sometimes called "dynamic trees".
* 2010: [**A new purely functional delete algorithm for red-black trees][59], by Matt Might**: Like Okasaki's red-black tree insertion algorithm, this is not a new data structure or a new operation on a data structure, but a new, simpler way to write a known operation.
* 2012: [**RRB-Trees: Efficient Immutable Vectors][60], by Phil Bagwell and Tiark Rompf**: An extension to Hash Array Mapped Tries, supporting immutable vector concatenation, insert-at, and split in O(lg n) time, while maintaining the index, update, and insertion speeds of the original immutable vector.
### Known in 1997, but not discussed in Okasaki's book:
* **Many other styles of balanced search tree**. AVL, brother, rank-balanced, bounded-balance, and many other balanced search trees can be (and have been) implemented purely functionally by path copying. Perhaps deserving special mention are:
* [**Biased Search Trees][61], by Samuel W. Bent, Daniel D. Sleator, and Robert E. Tarjan**: A key element in Brodal et al.'s 2006 paper and Demaine et al.'s 2008 paper.
* [**Infinite sets that admit fast exhaustive search][62], by Martín Escardó**: Perhaps not a data structure _per se_.
* [**Three algorithms on Braun Trees][63], by Chris Okasaki**: Braun trees offer many stack operations in worst-case O(lg n). This bound is surpassed by many other data structures, but Braun trees have a `cons` operation lazy in its second argument, and so can be used as infinite stacks in some ways that other structures cannot.
* [**The relaxed min-max heap: A mergeable double-ended priority queue][64] and [The KD heap: An efficient multi-dimensional priority queue][65], by Yuzheng Ding and Mark Allen Weiss**: These happen to be purely functional, though this is not discussed in the papers. I do not think the time bounds achieved are any better than those that can be achieved by using finger trees (of Hinze & Paterson or Kaplan & Tarjan) as k-dimensional priority queues, but I think the structures of Ding & Weiss uses less space.
* [**The Zipper][66], by Gérard Huet**: Used in many other data structures (such as Hinze & Paterson's finger trees), this is a way of turning a data structure inside-out.
* **Difference lists** are O(1) catenable lists with an O(n) transformation to usual `cons` lists. They have apparently been known since antiquity in the Prolog community, where they have an O(1) transformation to usual `cons` lists. The O(1) transformation seems to be impossible in traditional functional programming, but Minamide's [hole abstraction][67], from POPL '98, discusses a way of allowing O(1) append and O(1) transformation within pure functional programming. Unlike the usual functional programming implementations of difference lists, which are based on function closures, hole abstractions are essentially the same (in both their use and their implementation) as Prolog difference lists. However, it seems that for years the only person that noticed this was [one of Minamide's reviewers][68].
* **Uniquely represented dictionaries** support insert, update, and lookup with the restriction that no two structures holding the same elements can have distinct shapes. To give an example, sorted singly-linked lists are uniquely represented, but traditional AVL trees are not. Tries are also uniquely represented. [Tarjan and Sundar, in "Unique binary search tree representations and equality-testing of sets and sequences"][69], showed a purely functional uniquely represented dictionary that supports searches in logarithmic time and updates in $O(sqrt{n})$ time. However, it uses $Theta(n lg n)$ space. There is a [simple representation][70] using [Braun trees][71] that uses only linear space but has update time of $Theta(sqrt{n lg n})$ and search time of $Theta(lg^2 n)$
### Mostly functional data structures, before, during, and after Okasaki's book:
* **Many procedures for making data structures persistent, fully persistent, or confluently persistent**: Haim Kaplan wrote [an excellent survey on the topic][72]. See also above the work of Demaine et al., who demonstrate a fully persistent array in $O(m)$ space (where $m$ is the number of operations ever performed on the array) and $O(lg lg n)$ expected access time.
* 1989: [**Randomized Search Trees][73] by Cecilia R. Aragon and Raimund Seidel**: These were discussed in a purely functional setting by Guy E. Blelloch and Margaret Reid-Miller in [Fast Set Operations Using Treaps][74] and by Dan Blandford and Guy Blelloch in [Functional Set Operations with Treaps][75] ([code][76]). They provide all of the operations of purely functional fingertrees and biased search trees, but require a source of randomness, making them not purely functional. This may also invalidate the time complexity of the operations on treaps, assuming an adversary who can time operations and repeat the long ones. (This is the same reason why imperative amortization arguments aren't valid in a persistent setting, but it requires an adversary with a stopwatch)
* 1997: [**Skip-trees, an alternative data structure to Skip-lists in a concurrent approach][77], by Xavier Messeguer and [Exploring the Duality Between Skip Lists and Binary Search Trees][78], by Brian C. Dean and Zachary H. Jones**: Skip lists are not purely functional, but they can be implemented functionally as trees. Like treaps, they require a source of random bits. (It is possible to make skip lists deterministic, but, after translating them to a tree, I think they are just another way of looking at 2-3 trees.)
* 1998: **All of the amortized structures in Okasaki's book!** Okasaki invented this new method for mixing amortization and functional data structures, which were previously thought to be incompatible. It depends upon memoization, which, as Kaplan and Tarjan have sometimes mentioned, is actually a side effect. In some cases ([such as PFDS on SSDs for performance reasons][79]), this may be inappropriate.
* 1998: [**Simple Confluently Persistent Catenable Lists][80], by Haim Kaplan, Chris Okasaki, and Robert E. Tarjan**: Uses modification under the hood to give amortized O(1) catenable deques, presenting the same interface as an earlier (purely functional, but with memoization) version appearing in Okasaki's book. Kaplan and Tarjan had earlier created a purely functional O(1) worst-case structure, but it is substantially more complicated.
* 2007: As mentioned in another answer on this page, [semi-persistent data structures][81] and [persistent union-find][82] by Sylvain Conchon and Jean-Christophe Filliâtre
### Techniques for verifying functional data structures, before, during, and after Okasaki's book:
* **Phantom types** are an old method for creating an API that does not allow certain ill-formed operations. A sophisticated use of them can be found in Oleg Kiselyov and Chung-chieh Shan's [Lightweight Static Capabilities][83].
* **Nested types** are not actually more recent than 1998 - Okasaki even uses them in his book. There are many other examples that are not in Okasaki's book; some are new, and some are old. They include:
* Stefan Kahrs's [Red-black trees with types][84] ([code][85])
* Ross Paterson's [AVL trees][86] ([mirror][87])
* Chris Okasaki's [From fast exponentiation to square matrices: an adventure in types][88]
* Richard S. Bird and Ross Peterson's [de Bruijn notation as a nested datatype][89]
* Ralf Hinze's [Numerical Representations as Higher-Order Nested Datatypes][90].
* **GADTs** are not all that new, either. They are a recent addition to Haskell and some MLs, but they have been present, I think, in [various typed lambda calculi since the 1970s][91].
* 2004-2010: **Coq and Isabelle for correctness**. Several people have used theorem provers to verify the correctness of purely functional data structures. Coq can extract these verifications to working code in Haskell, OCaml, and Scheme; Isabelle can extract to Haskell, ML, and OCaml.
* Coq:
* Pierre Letouzey and Jean-Christophe Filliâtre [formalized red-black and AVL(ish) trees, finding a bug in the OCaml standard library in the process][92].
* I [formalized Brodal and Okasaki's asymptotically optimal priority queues][93].
* Arthur Charguéraud [formalized 825 of the 1,700 lines of ML in Okasaki's book][94].
* Isabelle:
* Tobias Nipkow and Cornelia Pusch [formalized AVL trees][95].
* Viktor Kuncak formalized [unbalanced binary search trees][96].
* Peter Lammich published [The Isabelle Collections framework][97], which includes formalizations of efficient purely functional data structures like red-black trees and tries, as well as data structures that are less efficient when used persistently, such as two-stack-queues (without Okasaki's laziness trick) and hash tables.
* Peter Lammich also published formalizations of [tree automata][98], [Hinze & Patterson's finger trees][99] (with Benedikt Nordhoff and Stefan Körner), and [Brodal and Okasaki's purely functional priority queues][100] (with Rene Meis and Finn Nielsen).
* René Neumann formalized [binomial priority queues][101].
* 2007: **[Refined Typechecking with Stardust][102], by Joshua Dunfield**: This paper uses refinement types for ML to find errors in SMLNJ's red-black tree delete function.
* 2008: **[Lightweight Semiformal Time Complexity Analysis for Purely Functional Data Structures][103] by Nils Anders Danielsson**: Uses Agda with manual annotation to prove time bounds for some PFDS.
### Imperative data structures or analyses not discussed in Okasaki's book, but related to purely functional data structures:
* **[The Soft Heap: An Approximate Priority Queue with Optimal Error Rate][104], by Bernard Chazelle**: This data structure does not use arrays, and so has tempted [first the #haskell IRC channel][105] and [later Stack Overflow users][106], but it includes `delete` in o(lg n), which is usually not possible in a functional setting, and imperative amortized analysis, which is not valid in a purely functional setting.
* **Balanced binary search trees with O(1) finger updates**. In [Making Data Structures Persistent][107], James R Driscoll, Neil Sarnak, Daniel D. Sleator, and Robert E. Tarjan present a method for grouping the nodes in a red-black tree so that persistent updates require only O(1) space. The purely functional deques and finger trees designed by Tarjan, Kaplan, and Mihaescu all use a very similar grouping technique to allow O(1) updates at both ends. [AVL-trees for localized search][108] by Athanasios K. Tsakalidis works similarly.
* **Faster pairing heaps or better bounds for pairing heaps**: Since Okasaki's book was published, several new analyses of imperative pairing heaps have appeared, including [Pairing heaps with O(log log n) decrease Cost][109] by Amr Elmasry and [Towards a Final Analysis of Pairing Heaps][110] by Seth Pettie. It may be possible to apply some of this work to Okasaki's lazy pairing heaps.
* **Deterministic biased finger trees**: In [Biased Skip Lists][111], by Amitabha Bagchi, Adam L. Buchsbaum, and Michael T. Goodrich, a design is presented for deterministic biased skip lists. Through the skip list/tree transformation mentioned above, it may be possible to make deterministic biased search trees. The finger biased skip lists described by John Iacono and Özgür Özkan in [Mergeable Dictionaries][112] might then be possible on biased skip trees. A biased finger tree is suggested by Demaine et al. in their paper on purely functional tries (see above) as a way to reduce the time-and space bounds on finger update in tries.
* **[The String B-Tree: A New Data Structure for String Search in External Memory and its Applications][113] by Paolo Ferragina and Roberto Grossi** is a well studied data structure combining the benefits of tries and B-trees.
|
[share][114]|cite|[improve this answer][115]
|
[edited May 23 '17 at 11:33][116]
|
community wiki
[ 41 revs, 5 users 94%
[jbapple][117] ][118]
|
|
| |
* 4
I don't remember checking the "community wiki" box on this answer. Is there any way to undo that?  [jbapple][43] Sep 22 '10 at 20:10
* 7
@jbapple: after a certain number of edits, all posts become community wiki. That's an impressively thorough review there. Thank you.  [Novelocrat][119] Sep 23 '10 at 3:07
* 28
Great list! Which makes me wish Okasaki would publish a second edition.  [Radu GRIGore][120] Sep 30 '10 at 10:33
* 4
Note that Isabelle/HOL can generate code for SML, OCaml, Haskell, Scala. The Haskabelle tool can also import Haskell into Isabelle/HOL.  [Makarius][121] Mar 4 '13 at 11:31
* 2
The terminology of "programm extraction" is one of Coq: you take a constructive proof and make an executable program from it, stripping away some things. In Isabelle this is called "code generation" and works differently, using the HOL _specifications_ as pseudo-code, not the proofs. Proof extraction in Isabelle/HOL according to Berghofer does work like Coq, but is rarely used these days.  [Makarius][121] Mar 4 '13 at 11:34
 |  show **6** more comments
|
| ----- |
|
up vote 59 down vote
|
To the excellent notes already made, I'll add **Zippers**.
Huet, Gerard. "Functional Pearl: The Zipper" Journal of Functional Programming 7 (5): 549-554, September 1997.
[Wikipedia: Zipper (data structure)][122]
|
[share][123]|cite|[improve this answer][124]
|
[edited Nov 13 '13 at 3:11][125]
![][126]
[Rory O'Kane][127]
1033
|
answered Sep 21 '10 at 18:06
![][128]
[Matt Might][129]
81956
|
|
| |
* 4
Zippers are AWESOME. For many use cases, they allow tree based representations to become the "right" choice for many kinds of data where otherwise it'd be a bit more complicated  [Carter Tazio Schonwald][130] Dec 1 '10 at 22:52
* 1
An example of their use for XML manipulation: [anti-xml.org/zippers.html][131]  [Mechanical snail][132] Aug 22 '12 at 20:29
add a comment | 
|
| ----- |
|
up vote 36 down vote
|
Conchon, Filliatre, [A Persistent UNION-FIND Data Structure][133] and [Semi-persistent Data Structures][134].
|
[share][135]|cite|[improve this answer][136]
|
[edited Apr 26 '14 at 17:07][137]
![][138]
[Huge][139]
1033
|
answered Sep 21 '10 at 8:13
![][140]
[Radu GRIGore][141]
3,9012265
|
|
| |
* Wow, a persistent UNION-FIND! Thanks!  [jkff][142] Sep 21 '10 at 8:17
* 3
Well, kind of... See the article.  [Radu GRIGore][120] Sep 21 '10 at 8:18
* 1
... or, if you prefer, see some code (by Matt Parkinson) [github.com/septract/jstar/blob/master/src/utils/…][143]  [Radu GRIGore][120] Sep 21 '10 at 8:50
* 5
Now I see why the "kind of.." comment had an upvote. They have good performance only when one almost exclusively either does not use persistence, or backtracks all the time: if you often use both "new" and "old" versions, you're screwed. Cool rerooting idea though.  [jkff][142] Sep 22 '10 at 11:13
* Radu's link can now be found at [github.com/septract/jstar-old/blob/…][144]  [jbapple][43] Jun 17 '12 at 2:36
add a comment | 
|
| ----- |
|
up vote 18 down vote
|
I'd add McBride's version of zippers as derivatives of data types.
|
[share][145]|cite|[improve this answer][146]
|
answered Sep 22 '10 at 2:05
![][147]
[none][148]
1812
|
|
| |
* I love that stuff. It's just so cool that the derivative has an application so wildly different from finding rates of change!  [SamB][149] Sep 22 '10 at 22:00
* 3
SamB, you might also be interested in derivatives of regular expressions (if you didn't already know about them).  [jbapple][43] Sep 22 '10 at 23:33
* 3
Here's [the original paper on derivatives of regular expressions][150].  [jameshfisher][151] Jun 16 '13 at 10:37
add a comment | 
|
| ----- |
|
up vote 12 down vote
|
[Rangemaps][152]
It is a specialized data structure, but it can be used as a substitute for Martin Erwig's DIET, with slightly different properties, so at least there is one existing data structure to compare it to. The DIET itself was described in an article in JFP in 1998, so perhaps it is not included in Purely Functional Data Structures.
|
[share][153]|cite|[improve this answer][154]
|
answered Jan 28 '11 at 9:07
![][155]
[Complicated see bio][156]
22124
|
|
| |
add a comment | 
|
| ----- |
|
up vote 5 down vote
|
Following up on the 2012 paper linked above, the work on RRB vectors has since been extended and published in ICFP'15.
RRB vector: a practical general purpose immutable sequence <http://dl.acm.org/citation.cfm?id=2784739>
|
[share][157]|cite|[improve this answer][158]
|
answered Jun 28 '16 at 16:57
![][159]
[Mike Rainey][160]
5111
|
|
| |
add a comment | 
|
## Your Answer
 
draft saved
draft discarded
### Sign up or [log in][161]
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
### Post as a guest
| ----- |
|
Name
Email
|
### Post as a guest
| ----- |
|
Name
Email
|
[discard][1]
By posting your answer, you agree to the [privacy policy][162] and [terms of service][163].
## Not the answer you're looking for? Browse other questions tagged [reference-request][31] [big-list][32] [ds.data-structures][33] [functional-programming][34] or [ask your own question][26].
| ----- |
|
asked
|
**7 years, 5 months ago**
|
|
viewed
|
**108,149 times**
|
|
active
|
**[1 year, 7 months ago][164]**
|
#### Linked
[
64
][165] [How important is knowing how to program for TCS?][166]
[
49
][167] [What are the outstanding questions in purely functional data structures?][168]
[
18
][169] [Math talk: Theorem about git revision control system?][170]
[
13
][171] [Difference lists in functional programming][172]
[
10
][173] [How do I choose a functional dictionary data structure?][174]
#### Related
[49
][167][What are the outstanding questions in purely functional data structures?][175]
[12
][176][Applications of an access lemma for dynamic forests?][177]
[17
][178][Sequences with sublogarithmic concat and approximate split][179]
[-2
][180][Fortunes Algorithm - Beach Line Data Structure][181]
[6
][182][Updates on a cache-oblivious B-tree][183]
[6
][184][Purely functional uniquely-represented deques][185]
[5
][186][Is there a purely functional vector with O(1) access to the front and back but O(log n) concatenation?][187]
[9
][188][How to design concurrent data structures?][189]
[8
][190][What are the must-read search trees paper?][191]
[6
][192][Purely(ish) functional data structure with fast append and forward iteration][193]
#### [ Hot Network Questions ][194]
* [ Why can't we all agree to create a self-fulfilling prophecy with regards to the stock market? ][195]
* [ "War room" and "Wardroom" ][196]
* [ Excel: I want to extract characters from 1 column and paste these into a separate column ][197]
* [ How do you write a Stack Exchange answer? ][198]
* [ What underwater creature would be well-suited as a pack animal? ][199]
* [ Who decides whether to opt out of beneficial abilities when under Suggestion? ][200]
* [ I work miracles. What am I? ][201]
* [ What is this type of scene transition called? ][202]
* [ Strange ice found in my garden ][203]
* [ TikZ miscalculates some intersections, dimension too large ][204]
* [ SpaceX merlin engine failure ][205]
* [ How do I tell my mother that I'm an atheist? ][206]
* [ Why do you need to study a subject at a university level to teach it at a high school? ][207]
* [ Do fossil fuels insulate the crust from the Earth's interior? ][208]
* [ Pull-up or pull-down when building an LED ROM for 74HC logic levels? ][209]
* [ There are two new sheriffs in town Identifying DJMcMego pairs! ][210]
* [ Equisatisfiability in the reduction from 4-SAT to 3-SAT ][211]
* [ What is Stream Sniping? ][212]
* [ Numbered hats, Warden and Maths ][213]
* [ How to tell my friend his novel's ending is too predictable but he should keep writing it? ][214]
* [ First call to the moon 1969 ][215]
* [ What other circumstances may cause the autopilot to trip out? ][216]
* [ Why does the BHS suggest היום for האישׁ in Jeremiah 20:16? ][217]
* [ Possibilities of Mortgage with incalculable Credit Score ][218]
[ more hot questions ][1]
[ question feed ][219]
![][220]
##### [Theoretical Computer Science][221]
* [Tour][12]
* [Help][5]
* [Chat][6]
* [Contact][222]
* [Feedback][7]
* Mobile
##### [Company][13]
* [Stack Overflow][2]
* [Stack Overflow Business][223]
* [Developer Jobs][224]
* [About][13]
* [Press][225]
* [Legal][226]
* [Privacy Policy][162]
##### [Stack Exchange
Network][3]
* [Technology][1]
* [Life / Arts][1]
* [Culture / Recreation][1]
* [Science][1]
* [Other][1]
* [Stack Overflow][227]
* [Server Fault][228]
* [Super User][229]
* [Web Applications][230]
* [Ask Ubuntu][231]
* [Webmasters][232]
* [Game Development][233]
* [TeX - LaTeX][234]
* [Software Engineering][235]
* [Unix & Linux][236]
* [Ask Different (Apple)][237]
* [WordPress Development][238]
* [Geographic Information Systems][239]
* [Electrical Engineering][240]
* [Android Enthusiasts][241]
* [Information Security][242]
* [Database Administrators][243]
* [Drupal Answers][244]
* [SharePoint][245]
* [User Experience][246]
* [Mathematica][247]
* [Salesforce][248]
* [ExpressionEngine® Answers][249]
* [Stack Overflow em Português][250]
* [Blender][251]
* [Network Engineering][252]
* [Cryptography][253]
* [Code Review][254]
* [Magento][255]
* [Software Recommendations][256]
* [Signal Processing][257]
* [Emacs][258]
* [Raspberry Pi][259]
* [Stack Overflow на русском][260]
* [Programming Puzzles & Code Golf][261]
* [Stack Overflow en español][262]
* [Ethereum][263]
* [Data Science][264]
* [Arduino][265]
* [Bitcoin][266]
* [ ** more (28) ** ][267]
* [Photography][268]
* [Science Fiction & Fantasy][269]
* [Graphic Design][270]
* [Movies & TV][271]
* [Music: Practice & Theory][272]
* [Worldbuilding][273]
* [Seasoned Advice (cooking)][274]
* [Home Improvement][275]
* [Personal Finance & Money][276]
* [Academia][277]
* [Law][278]
* [ ** more (16) ** ][279]
* [English Language & Usage][280]
* [Skeptics][281]
* [Mi Yodeya (Judaism)][282]
* [Travel][283]
* [Christianity][284]
* [English Language Learners][285]
* [Japanese Language][286]
* [Arqade (gaming)][287]
* [Bicycles][288]
* [Role-playing Games][289]
* [Anime & Manga][290]
* [Puzzling][291]
* [Motor Vehicle Maintenance & Repair][292]
* [ ** more (32) ** ][293]
* [MathOverflow][294]
* [Mathematics][295]
* [Cross Validated (stats)][296]
* [Theoretical Computer Science][297]
* [Physics][298]
* [Chemistry][299]
* [Biology][300]
* [Computer Science][301]
* [Philosophy][302]
* [ ** more (10) ** ][303]
* [Meta Stack Exchange][304]
* [Stack Apps][305]
* [API][306]
* [Data][307]
* [Area 51][308]
* [Blog][309]
* [Facebook][310]
* [Twitter][311]
* [LinkedIn][312]
site design / logo © 2018 Stack Exchange Inc; user contributions licensed under [cc by-sa 3.0][313] with [attribution required][314]. rev 2018.2.23.29126
Theoretical Computer Science Stack Exchange works best with JavaScript enabled ![][315]
[1]: https://cstheory.stackexchange.com#
[2]: https://stackoverflow.com
[3]: https://stackexchange.com
[4]: https://cstheory.stackexchange.com
[5]: https://cstheory.stackexchange.com/help
[6]: https://chat.stackexchange.com?tab=site&host=cstheory.stackexchange.com
[7]: https://cstheory.meta.stackexchange.com
[8]: https://cstheory.stackexchange.com/users/signup?ssrc=site_switcher&returnurl=https%3a%2f%2fcstheory.stackexchange.com%2fquestions%2f1539%2fwhats-new-in-purely-functional-data-structures-since-okasaki
[9]: https://cstheory.stackexchange.com/users/login?ssrc=site_switcher&returnurl=https%3a%2f%2fcstheory.stackexchange.com%2fquestions%2f1539%2fwhats-new-in-purely-functional-data-structures-since-okasaki
[10]: https://stackexchange.com/sites
[11]: https://stackoverflow.blog
[12]: https://cstheory.stackexchange.com/tour
[13]: https://stackoverflow.com/company/about
[14]: https://www.stackoverflowbusiness.com/?ref=topbar_help
[15]: https://stackexchange.com/users/?tab=inbox "Recent inbox messages"
[16]: https://stackexchange.com/users/?tab=reputation "Recent achievements: reputation, badges, and privileges earned"
[17]: https://cstheory.stackexchange.com# "Help Center and other resources"
[18]: https://stackexchange.com "A list of all 172 Stack Exchange sites"
[19]: https://cstheory.stackexchange.com/users/login?ssrc=head&returnurl=https%3a%2f%2fcstheory.stackexchange.com%2fquestions%2f1539%2fwhats-new-in-purely-functional-data-structures-since-okasaki
[20]: https://cstheory.stackexchange.com/users/signup?ssrc=head&returnurl=https%3a%2f%2fcstheory.stackexchange.com%2fquestions%2f1539%2fwhats-new-in-purely-functional-data-structures-since-okasaki
[21]: https://cstheory.stackexchange.com/questions
[22]: https://cstheory.stackexchange.com/tags
[23]: https://cstheory.stackexchange.com/users
[24]: https://cstheory.stackexchange.com/help/badges
[25]: https://cstheory.stackexchange.com/unanswered
[26]: https://cstheory.stackexchange.com/questions/ask
[27]: https://cstheory.stackexchange.com/users/signup?ssrc=hero&returnurl=https%3a%2f%2fcstheory.stackexchange.com%2fquestions%2f1539%2fwhats-new-in-purely-functional-data-structures-since-okasaki
[28]: https://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki
[29]: http://hackage.haskell.org/packages/archive/containers/0.1.0.1/doc/html/Data-IntMap.html
[30]: http://apfelmus.nfshost.com/articles/monoid-fingertree.html
[31]: https://cstheory.stackexchange.com/questions/tagged/reference-request "show questions tagged 'reference-request'"
[32]: https://cstheory.stackexchange.com/questions/tagged/big-list "show questions tagged 'big-list'"
[33]: https://cstheory.stackexchange.com/questions/tagged/ds.data-structures "show questions tagged 'ds.data-structures'"
[34]: https://cstheory.stackexchange.com/questions/tagged/functional-programming "show questions tagged 'functional-programming'"
[35]: https://cstheory.stackexchange.com/q/1539 "short permalink to this question"
[36]: https://cstheory.stackexchange.com/posts/1539/edit ""
[37]: https://www.gravatar.com/avatar/cd3a7820c69adfd1e8c62152248343c3?s=32&d=identicon&r=PG
[38]: https://cstheory.stackexchange.com/users/326/jkff
[39]: https://cstheory.stackexchange.com/users/80/suresh-venkat "26,796 reputation"
[40]: https://cstheory.stackexchange.com/users/270/charles-stewart "3,721 reputation"
[41]: https://cstheory.stackexchange.com/users/394/robert-massaioli "101 reputation"
[42]: http://cstheory.stackexchange.com/questions/1586/what-are-the-outstanding-questions-in-purely-functional-data-structures
[43]: https://cstheory.stackexchange.com/users/43/jbapple "4,037 reputation"
[44]: http://okasaki.blogspot.ca/2008/02/ten-years-of-purely-functional-data.html
[45]: https://cstheory.stackexchange.com/users/186/kaveh "16,113 reputation"
[46]: https://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki?answertab=active#tab-top "Answers with the latest activity first"
[47]: https://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki?answertab=oldest#tab-top "Answers in the order they were provided"
[48]: https://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki?answertab=votes#tab-top "Answers with the highest score first"
[49]: http://infoscience.epfl.ch/record/64398
[50]: http://infoscience.epfl.ch/record/64394
[51]: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.18.1149
[52]: http://www.comlab.ox.ac.uk/people/ralf.hinze/publications/ICFP02.pdf
[53]: http://www.cs.princeton.edu/courses/archive/fall03/cs528/handouts/Notes%20on%20Catenable%20Deques.doc
[54]: http://www.math.tau.ac.il/~haimk/adv-ds-2000/jacm-final.pdf
[55]: http://www.eecs.usma.edu/webs/people/okasaki/sigcse05.pdf
[56]: http://www.eecs.usma.edu/webs/people/okasaki/sigcse05/index.html
[57]: http://www.cs.au.dk/~gerth/pub/esa06trees.html
[58]: http://erikdemaine.org/papers/ConfluentTries_Algorithmica/
[59]: http://matt.might.net/articles/red-black-delete/
[60]: http://infoscience.epfl.ch/record/169879/files/RMTrees.pdf
[61]: http://scholar.google.com/scholar?cluster=10425132226535600788
[62]: http://cs.bham.ac.uk/~mhe/papers/exhaustive.pdf
[63]: http://www.eecs.usma.edu/webs/people/okasaki/jfp97.ps
[64]: http://scholar.google.com/scholar?cluster=2335375395981576930
[65]: http://scholar.google.com/scholar?cluster=9505131584786452948
[66]: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.185.2421
[67]: http://dl.acm.org/citation.cfm?id=268953
[68]: http://requestforlogic.blogspot.com/2011/08/holey-data-postscript-hole-abstraction.html
[69]: https://www.cs.princeton.edu/research/techreps/TR-267-90
[70]: https://github.com/jbapple/unique
[71]: http://alexandria.tue.nl/repository/notdare/772185.pdf
[72]: http://www.math.tau.ac.il/~haimk/papers/persistent-survey.ps
[73]: http://acs.lbl.gov/~aragon/treaps.html
[74]: http://www.cs.cmu.edu/afs/cs.cmu.edu/project/scandal/public/papers/treaps-spaa98.html
[75]: http://www.cs.cmu.edu/afs/cs/project/pscico/pscico/papers/fingertrees/main.pdf
[76]: http://www.cs.cmu.edu/afs/cs/project/pscico/pscico/src/fingertrees/
[77]: http://www.lsi.upc.edu/~peypoch/investigacio/reports.dir/RAIRO.ps.gz
[78]: http://www.cs.clemson.edu/~bcdean/paper11.html
[79]: http://rethinkdb.com/jobs/
[80]: http://www.math.tau.ac.il/~haimk/adv-ds-2000/okasaki-kaplan-tarjan-sicomp.ps
[81]: http://www.lri.fr/~filliatr/ftp/publis/spds-rr.pdf
[82]: http://www.lri.fr/~filliatr/puf/
[83]: http://okmij.org/ftp/Computation/lightweight-dependent-typing.html#Lightweight
[84]: http://www.cs.kent.ac.uk/pubs/2001/1293/index.html
[85]: http://www.cs.kent.ac.uk/people/staff/smk/redblack/rb.html
[86]: http://www.haskell.org/pipermail/haskell/2003-April/011693.html
[87]: http://www.cse.unsw.edu.au/~dons/haskell-1990-2006/msg14064.html
[88]: http://www.eecs.usma.edu/webs/people/okasaki/icfp99.ps
[89]: http://web.comlab.ox.ac.uk/oucl/work/richard.bird/online/BirdPaterson99DeBruijn.pdf
[90]: http://web.comlab.ox.ac.uk/oucl/work/ralf.hinze/publications/IAI-TR-98-12.ps.gz
[91]: https://sympa-roc.inria.fr/wws/arc/coq-club/2010-09/msg00072.html
[92]: http://www.lri.fr/~filliatr/fsets/
[93]: http://code.google.com/p/priority-queues/
[94]: http://www.chargueraud.org/softs/cfml/
[95]: http://afp.sourceforge.net/entries/AVL-Trees.shtml
[96]: http://afp.sourceforge.net/entries/BinarySearchTree.shtml
[97]: http://wwwmath.uni-muenster.de:8010/sev/staff/lammich/isabelle/#collections
[98]: http://afp.sourceforge.net/devel-entries/Tree-Automata.shtml
[99]: http://afp.sourceforge.net/devel-entries/Finger-Trees.shtml
[100]: http://afp.sourceforge.net/devel-entries/Binomial-Heaps.shtml
[101]: http://afp.sourceforge.net/devel-entries/Binomial-Queues.shtml
[102]: http://www.cs.cmu.edu/~joshuad/papers/stardust/
[103]: http://www.cs.nott.ac.uk/~nad/publications/danielsson-popl2008.html
[104]: http://www.cs.princeton.edu/~chazelle/pubs/sheap.pdf
[105]: http://tunes.org/~nef//logs/haskell/10.05.11
[106]: https://stackoverflow.com/questions/3402361/purely-functional-soft-heap
[107]: http://www.cs.cmu.edu/~sleator/papers/Persistence.htm
[108]: http://scholar.google.com/scholar?cluster=1646762318420773825
[109]: http://siam.org/proceedings/soda/2009/SODA09_052_elmasrya.pdf
[110]: http://www.eecs.umich.edu/~pettie/papers/focs05.pdf
[111]: http://www.ics.uci.edu/~goodrich/pubs/bsl.pdf
[112]: http://arxiv.org/abs/1002.4248
[113]: http://doi.acm.org/10.1145/301970.301973
[114]: https://cstheory.stackexchange.com/a/1550 "short permalink to this answer"
[115]: https://cstheory.stackexchange.com/posts/1550/edit ""
[116]: https://cstheory.stackexchange.com/posts/1550/revisions "show all edits to this post"
[117]: https://cstheory.stackexchange.com/users/43
[118]: https://cstheory.stackexchange.com/posts/1550/revisions "show revision history for this post"
[119]: https://cstheory.stackexchange.com/users/1440/novelocrat "101 reputation"
[120]: https://cstheory.stackexchange.com/users/236/radu-grigore "3,901 reputation"
[121]: https://cstheory.stackexchange.com/users/14019/makarius "385 reputation"
[122]: http://en.wikipedia.org/wiki/Zipper_%28data_structure%29
[123]: https://cstheory.stackexchange.com/a/1552 "short permalink to this answer"
[124]: https://cstheory.stackexchange.com/posts/1552/edit ""
[125]: https://cstheory.stackexchange.com/posts/1552/revisions "show all edits to this post"
[126]: https://www.gravatar.com/avatar/5b2b185c814bb25f2f95a1152e58f033?s=32&d=identicon&r=PG
[127]: https://cstheory.stackexchange.com/users/10318/rory-okane
[128]: https://www.gravatar.com/avatar/b4639677aef04b44d9299f60b7b12dab?s=32&d=identicon&r=PG
[129]: https://cstheory.stackexchange.com/users/706/matt-might
[130]: https://cstheory.stackexchange.com/users/18/carter-tazio-schonwald "320 reputation"
[131]: http://anti-xml.org/zippers.html
[132]: https://cstheory.stackexchange.com/users/5629/mechanical-snail "101 reputation"
[133]: http://scholar.google.com/scholar?cluster=8164878778013876774
[134]: http://link.springer.com/chapter/10.1007/978-3-540-78739-6_25
[135]: https://cstheory.stackexchange.com/a/1540 "short permalink to this answer"
[136]: https://cstheory.stackexchange.com/posts/1540/edit ""
[137]: https://cstheory.stackexchange.com/posts/1540/revisions "show all edits to this post"
[138]: https://www.gravatar.com/avatar/281f0322e329128f8ca815defcffa7d3?s=32&d=identicon&r=PG
[139]: https://cstheory.stackexchange.com/users/22685/huge
[140]: https://www.gravatar.com/avatar/fd91265e84931489c6ced077ea828506?s=32&d=identicon&r=PG
[141]: https://cstheory.stackexchange.com/users/236/radu-grigore
[142]: https://cstheory.stackexchange.com/users/326/jkff "4,194 reputation"
[143]: http://github.com/septract/jstar/blob/master/src/utils/persistentarray.ml
[144]: https://github.com/septract/jstar-old/blob/9ea84db498acab750b7c7dd5138aab19cd12bdf8/src/utils/persistentarray.ml
[145]: https://cstheory.stackexchange.com/a/1560 "short permalink to this answer"
[146]: https://cstheory.stackexchange.com/posts/1560/edit ""
[147]: https://www.gravatar.com/avatar/f3cb0908274c7ca0edb59d99bdbbd202?s=32&d=identicon&r=PG
[148]: https://cstheory.stackexchange.com/users/1371/none
[149]: https://cstheory.stackexchange.com/users/1345/samb "101 reputation"
[150]: http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.98.4378
[151]: https://cstheory.stackexchange.com/users/16438/jameshfisher "101 reputation"
[152]: http://jfla.inria.fr/2010/actes/PDF/bonichon_cuoq.pdf
[153]: https://cstheory.stackexchange.com/a/4614 "short permalink to this answer"
[154]: https://cstheory.stackexchange.com/posts/4614/edit ""
[155]: https://www.gravatar.com/avatar/8334bd22b07c864166de24990d874bee?s=32&d=identicon&r=PG
[156]: https://cstheory.stackexchange.com/users/1234/complicated-see-bio
[157]: https://cstheory.stackexchange.com/a/36063 "short permalink to this answer"
[158]: https://cstheory.stackexchange.com/posts/36063/edit ""
[159]: https://lh3.googleusercontent.com/-bBHhnSEgMsY/AAAAAAAAAAI/AAAAAAAAEuI/dju7Ch8RRw4/photo.jpg?sz=32
[160]: https://cstheory.stackexchange.com/users/40615/mike-rainey
[161]: https://cstheory.stackexchange.com/users/login?ssrc=question_page&returnurl=https%3a%2f%2fcstheory.stackexchange.com%2fquestions%2f1539%2fwhats-new-in-purely-functional-data-structures-since-okasaki%23new-answer
[162]: https://stackexchange.com/legal/privacy-policy
[163]: https://stackexchange.com/legal/terms-of-service
[164]: ?https://cstheory.stackexchange.com?lastactivity "2016-06-28 16:57:35Z"
[165]: https://cstheory.stackexchange.com/q/8851 "Vote score (upvotes - downvotes)"
[166]: https://cstheory.stackexchange.com/questions/8851/how-important-is-knowing-how-to-program-for-tcs?noredirect=1
[167]: https://cstheory.stackexchange.com/q/1586 "Vote score (upvotes - downvotes)"
[168]: https://cstheory.stackexchange.com/questions/1586/what-are-the-outstanding-questions-in-purely-functional-data-structures?noredirect=1
[169]: https://cstheory.stackexchange.com/q/32374 "Vote score (upvotes - downvotes)"
[170]: https://cstheory.stackexchange.com/questions/32374/math-talk-theorem-about-git-revision-control-system?noredirect=1
[171]: https://cstheory.stackexchange.com/q/2432 "Vote score (upvotes - downvotes)"
[172]: https://cstheory.stackexchange.com/questions/2432/difference-lists-in-functional-programming?noredirect=1
[173]: https://cstheory.stackexchange.com/q/4007 "Vote score (upvotes - downvotes)"
[174]: https://cstheory.stackexchange.com/questions/4007/how-do-i-choose-a-functional-dictionary-data-structure?noredirect=1
[175]: https://cstheory.stackexchange.com/questions/1586/what-are-the-outstanding-questions-in-purely-functional-data-structures
[176]: https://cstheory.stackexchange.com/q/5519 "Vote score (upvotes - downvotes)"
[177]: https://cstheory.stackexchange.com/questions/5519/applications-of-an-access-lemma-for-dynamic-forests
[178]: https://cstheory.stackexchange.com/q/5964 "Vote score (upvotes - downvotes)"
[179]: https://cstheory.stackexchange.com/questions/5964/sequences-with-sublogarithmic-concat-and-approximate-split
[180]: https://cstheory.stackexchange.com/q/9572 "Vote score (upvotes - downvotes)"
[181]: https://cstheory.stackexchange.com/questions/9572/fortunes-algorithm-beach-line-data-structure
[182]: https://cstheory.stackexchange.com/q/9942 "Vote score (upvotes - downvotes)"
[183]: https://cstheory.stackexchange.com/questions/9942/updates-on-a-cache-oblivious-b-tree
[184]: https://cstheory.stackexchange.com/q/25890 "Vote score (upvotes - downvotes)"
[185]: https://cstheory.stackexchange.com/questions/25890/purely-functional-uniquely-represented-deques
[186]: https://cstheory.stackexchange.com/q/27820 "Vote score (upvotes - downvotes)"
[187]: https://cstheory.stackexchange.com/questions/27820/is-there-a-purely-functional-vector-with-o1-access-to-the-front-and-back-but-o
[188]: https://cstheory.stackexchange.com/q/33865 "Vote score (upvotes - downvotes)"
[189]: https://cstheory.stackexchange.com/questions/33865/how-to-design-concurrent-data-structures
[190]: https://cstheory.stackexchange.com/q/36324 "Vote score (upvotes - downvotes)"
[191]: https://cstheory.stackexchange.com/questions/36324/what-are-the-must-read-search-trees-paper
[192]: https://cstheory.stackexchange.com/q/37148 "Vote score (upvotes - downvotes)"
[193]: https://cstheory.stackexchange.com/questions/37148/purelyish-functional-data-structure-with-fast-append-and-forward-iteration
[194]: https://stackexchange.com/questions?tab=hot
[195]: https://money.stackexchange.com/questions/91151/why-cant-we-all-agree-to-create-a-self-fulfilling-prophecy-with-regards-to-the
[196]: https://english.stackexchange.com/questions/432532/war-room-and-wardroom
[197]: https://superuser.com/questions/1297640/excel-i-want-to-extract-characters-from-1-column-and-paste-these-into-a-separat
[198]: https://writing.stackexchange.com/questions/33613/how-do-you-write-a-stack-exchange-answer
[199]: https://worldbuilding.stackexchange.com/questions/105593/what-underwater-creature-would-be-well-suited-as-a-pack-animal
[200]: https://rpg.stackexchange.com/questions/116050/who-decides-whether-to-opt-out-of-beneficial-abilities-when-under-suggestion
[201]: https://puzzling.stackexchange.com/questions/60873/i-work-miracles-what-am-i
[202]: https://movies.stackexchange.com/questions/85869/what-is-this-type-of-scene-transition-called
[203]: https://physics.stackexchange.com/questions/387926/strange-ice-found-in-my-garden
[204]: https://tex.stackexchange.com/questions/416817/tikz-miscalculates-some-intersections-dimension-too-large
[205]: https://space.stackexchange.com/questions/25557/spacex-merlin-engine-failure
[206]: https://interpersonal.stackexchange.com/questions/10799/how-do-i-tell-my-mother-that-im-an-atheist
[207]: https://academia.stackexchange.com/questions/104093/why-do-you-need-to-study-a-subject-at-a-university-level-to-teach-it-at-a-high-s
[208]: https://earthscience.stackexchange.com/questions/13416/do-fossil-fuels-insulate-the-crust-from-the-earths-interior
[209]: https://electronics.stackexchange.com/questions/357920/pull-up-or-pull-down-when-building-an-led-rom-for-74hc-logic-levels
[210]: https://codegolf.stackexchange.com/questions/156522/there-are-two-new-sheriffs-in-town-identifying-djmcmego-pairs
[211]: https://cs.stackexchange.com/questions/88489/equisatisfiability-in-the-reduction-from-4-sat-to-3-sat
[212]: https://gaming.stackexchange.com/questions/327100/what-is-stream-sniping
[213]: https://puzzling.stackexchange.com/questions/60939/numbered-hats-warden-and-maths
[214]: https://interpersonal.stackexchange.com/questions/10846/how-to-tell-my-friend-his-novels-ending-is-too-predictable-but-he-should-keep-w
[215]: https://space.stackexchange.com/questions/25600/first-call-to-the-moon-1969
[216]: https://aviation.stackexchange.com/questions/48875/what-other-circumstances-may-cause-the-autopilot-to-trip-out
[217]: https://hermeneutics.stackexchange.com/questions/31993/why-does-the-bhs-suggest-%d7%94%d7%99%d7%95%d7%9d-for-%d7%94%d7%90%d7%99%ef%ac%aa-in-jeremiah-2016
[218]: https://money.stackexchange.com/questions/91203/possibilities-of-mortgage-with-incalculable-credit-score
[219]: https://cstheory.stackexchange.com/feeds/question/1539 "feed of this question and its answers"
[220]: https://cstheory.stackexchange.com/posts/1539/ivc/d94c
[221]: https://cstheory.stackexchange.com/
[222]: https://cstheory.stackexchange.com/contact
[223]: https://www.stackoverflowbusiness.com/?utm_source=so-footer&utm_medium=referral&utm_campaign=brand-activation
[224]: https://stackoverflow.com/jobs
[225]: https://stackoverflow.com/company/press
[226]: https://stackexchange.com/legal
[227]: https://stackoverflow.com "professional and enthusiast programmers"
[228]: https://serverfault.com "system and network administrators"
[229]: https://superuser.com "computer enthusiasts and power users"
[230]: https://webapps.stackexchange.com "power users of web applications"
[231]: https://askubuntu.com "Ubuntu users and developers"
[232]: https://webmasters.stackexchange.com "pro webmasters"
[233]: https://gamedev.stackexchange.com "professional and independent game developers"
[234]: https://tex.stackexchange.com "users of TeX, LaTeX, ConTeXt, and related typesetting systems"
[235]: https://softwareengineering.stackexchange.com "professionals, academics, and students working within the systems development life cycle"
[236]: https://unix.stackexchange.com "users of Linux, FreeBSD and other Un*x-like operating systems"
[237]: https://apple.stackexchange.com "power users of Apple hardware and software"
[238]: https://wordpress.stackexchange.com "WordPress developers and administrators"
[239]: https://gis.stackexchange.com "cartographers, geographers and GIS professionals"
[240]: https://electronics.stackexchange.com "electronics and electrical engineering professionals, students, and enthusiasts"
[241]: https://android.stackexchange.com "enthusiasts and power users of the Android operating system"
[242]: https://security.stackexchange.com "information security professionals"
[243]: https://dba.stackexchange.com "database professionals who wish to improve their database skills and learn from others in the community"
[244]: https://drupal.stackexchange.com "Drupal developers and administrators"
[245]: https://sharepoint.stackexchange.com "SharePoint enthusiasts"
[246]: https://ux.stackexchange.com "user experience researchers and experts"
[247]: https://mathematica.stackexchange.com "users of Wolfram Mathematica"
[248]: https://salesforce.stackexchange.com "Salesforce administrators, implementation experts, developers and anybody in-between"
[249]: https://expressionengine.stackexchange.com "administrators, end users, developers and designers for ExpressionEngine® CMS"
[250]: https://pt.stackoverflow.com "programadores profissionais e entusiastas"
[251]: https://blender.stackexchange.com "people who use Blender to create 3D graphics, animations, or games"
[252]: https://networkengineering.stackexchange.com "network engineers"
[253]: https://crypto.stackexchange.com "software developers, mathematicians and others interested in cryptography"
[254]: https://codereview.stackexchange.com "peer programmer code reviews"
[255]: https://magento.stackexchange.com "users of the Magento e-Commerce platform"
[256]: https://softwarerecs.stackexchange.com "people seeking specific software recommendations"
[257]: https://dsp.stackexchange.com "practitioners of the art and science of signal, image and video processing"
[258]: https://emacs.stackexchange.com "those using, extending or developing Emacs"
[259]: https://raspberrypi.stackexchange.com "users and developers of hardware and software for Raspberry Pi"
[260]: https://ru.stackoverflow.com "программистов"
[261]: https://codegolf.stackexchange.com "programming puzzle enthusiasts and code golfers"
[262]: https://es.stackoverflow.com "programadores y profesionales de la informática"
[263]: https://ethereum.stackexchange.com "users of Ethereum, the decentralized application platform and smart contract enabled blockchain"
[264]: https://datascience.stackexchange.com "Data science professionals, Machine Learning specialists, and those interested in learning more about the field"
[265]: https://arduino.stackexchange.com "developers of open-source hardware and software that is compatible with Arduino"
[266]: https://bitcoin.stackexchange.com "Bitcoin crypto-currency enthusiasts"
[267]: https://stackexchange.com/sites#technology
[268]: https://photo.stackexchange.com "professional, enthusiast and amateur photographers"
[269]: https://scifi.stackexchange.com "science fiction and fantasy enthusiasts"
[270]: https://graphicdesign.stackexchange.com "Graphic Design professionals, students, and enthusiasts"
[271]: https://movies.stackexchange.com "movie and tv enthusiasts"
[272]: https://music.stackexchange.com "musicians, students, and enthusiasts"
[273]: https://worldbuilding.stackexchange.com "writers/artists using science, geography and culture to construct imaginary worlds and settings"
[274]: https://cooking.stackexchange.com "professional and amateur chefs"
[275]: https://diy.stackexchange.com "contractors and serious DIYers"
[276]: https://money.stackexchange.com "people who want to be financially literate"
[277]: https://academia.stackexchange.com "academics and those enrolled in higher education"
[278]: https://law.stackexchange.com "legal professionals, students, and others with experience or interest in law"
[279]: https://stackexchange.com/sites#lifearts
[280]: https://english.stackexchange.com "linguists, etymologists, and serious English language enthusiasts"
[281]: https://skeptics.stackexchange.com "scientific skepticism"
[282]: https://judaism.stackexchange.com "those who base their lives on Jewish law and tradition and anyone interested in learning more"
[283]: https://travel.stackexchange.com "road warriors and seasoned travelers"
[284]: https://christianity.stackexchange.com "committed Christians, experts in Christianity and those interested in learning more"
[285]: https://ell.stackexchange.com "speakers of other languages learning English"
[286]: https://japanese.stackexchange.com "students, teachers, and linguists wanting to discuss the finer points of the Japanese language"
[287]: https://gaming.stackexchange.com "passionate videogamers on all platforms"
[288]: https://bicycles.stackexchange.com "people who build and repair bicycles, people who train cycling, or commute on bicycles"
[289]: https://rpg.stackexchange.com "gamemasters and players of tabletop, paper-and-pencil role-playing games"
[290]: https://anime.stackexchange.com "anime and manga fans"
[291]: https://puzzling.stackexchange.com "those who create, solve, and study puzzles"
[292]: https://mechanics.stackexchange.com "mechanics and DIY enthusiast owners of cars, trucks, and motorcycles"
[293]: https://stackexchange.com/sites#culturerecreation
[294]: https://mathoverflow.net "professional mathematicians"
[295]: https://math.stackexchange.com "people studying math at any level and professionals in related fields"
[296]: https://stats.stackexchange.com "people interested in statistics, machine learning, data analysis, data mining, and data visualization"
[297]: https://cstheory.stackexchange.com "theoretical computer scientists and researchers in related fields"
[298]: https://physics.stackexchange.com "active researchers, academics and students of physics"
[299]: https://chemistry.stackexchange.com "scientists, academics, teachers and students"
[300]: https://biology.stackexchange.com "biology researchers, academics, and students"
[301]: https://cs.stackexchange.com "students, researchers and practitioners of computer science"
[302]: https://philosophy.stackexchange.com "those interested in the study of the fundamental nature of knowledge, reality, and existence"
[303]: https://stackexchange.com/sites#science
[304]: https://meta.stackexchange.com "meta-discussion of the Stack Exchange family of Q&A websites"
[305]: https://stackapps.com "apps, scripts, and development with the Stack Exchange API"
[306]: https://api.stackexchange.com "programmatic interaction with Stack Exchange sites"
[307]: https://data.stackexchange.com "querying Stack Exchange data using SQL"
[308]: https://area51.stackexchange.com "proposing new sites in the Stack Exchange network"
[309]: https://stackoverflow.blog?blb=1
[310]: https://www.facebook.com/officialstackoverflow/
[311]: https://twitter.com/stackoverflow
[312]: https://linkedin.com/company/stack-overflow
[313]: https://creativecommons.org/licenses/by-sa/3.0/
[314]: https://stackoverflow.blog/2009/06/25/attribution-required/
[315]: https://pixel.quantserve.com/pixel/p-c1rF4kxgLUzNc.gif