Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Functional Data Structures
Search
Aliaksandr Lomau
July 02, 2015
Technology
0
70
Functional Data Structures
Aliaksandr Lomau
July 02, 2015
Tweet
Share
More Decks by Aliaksandr Lomau
See All by Aliaksandr Lomau
Fails Night
allomov
0
48
"Ya Ne Lochu Comp" Challenge.
allomov
1
91
Catch and Throw in Ruby
allomov
0
44
Mortal Rubizza
allomov
0
89
Рэмбовидная проблема: особенности развития открытых технологий
allomov
0
52
Vault-tec: Safest Future
allomov
0
250
Promises and Reality
allomov
1
53
Cloud Theory for Rubizza Classes
allomov
0
90
Антология деплоя
allomov
0
75
Other Decks in Technology
See All in Technology
AWS re:Invent 2025 で頻出の 生成 AI サービスをおさらい
komakichi
3
230
国産クラウドを支える設計とチームの変遷 “技術・組織・ミッション”
kazeburo
5
8.8k
re:Inventにおける製造業のこれまでとこれから
hamadakoji
0
360
持続可能なアクセシビリティ開発
azukiazusa1
6
330
Bedrock のコスト監視設計
fohte
2
220
プロダクト負債と歩む持続可能なサービスを育てるための挑戦
sansantech
PRO
1
980
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
810
グローバルなコンパウンド戦略を支えるモジュラーモノリスとドメイン駆動設計
kawauso
3
8.9k
AIで加速する次世代のBill Oneアーキテクチャ〜成長の先にある軌道修正〜
sansantech
PRO
1
100
レガシーで硬直したテーブル設計から変更容易で柔軟なテーブル設計にする
red_frasco
4
580
.NET 10のEntity Framework Coreの新機能
htkym
0
120
レガシーシステム刷新における TypeSpec スキーマ駆動開発のすゝめ
tsukuha
3
710
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Scaling GitHub
holman
464
140k
RailsConf 2023
tenderlove
30
1.3k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Mobile First: as difficult as doing things right
swwweet
225
10k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
253
22k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
How to Think Like a Performance Engineer
csswizardry
28
2.3k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Transcript
by Alexander Lomov
Agenda: 1. Functional data primitives. What are they? 2. How
to live with immutable things? 3. Evaluating space and time. 4. Benefits for web developers.
None
Functional data primitives.
atoms sexprs
What is an atom?
ϷКίДЙОЛЙ㽞 ЂЕάНТЗ "UPNJTN
An atom is the smallest constituent unit of ordinary matter
that has the properties of a structural element. In our case atoms are fundamental data types such as numbers, string, bytes and etc.
atoms / s-expressions (sexp интимного тут нет) атомисты atomic symbols"
represented as "strings of capital Latin letters and digits with single embedded blanks" (i.e., character string and numeric literals).
s-expressions, sexprs or sexps - “symbolic expression”, are a notation
for nested list tree-structured data in Lisp. s-expression = ((x . y) | atom), where x and y are s-expressions
(2 * (3 + 4))
(* 2 (+ 3 4)) (2 * (3 + 4))
“Польская нотация”
cons cat cdr
cons = constructor (cons 1 (cons 2 (cons 3 nil)))
== (list 1 2 3)
car = the first element (content of address register) head
(cons 1 (cons 2 (cons 3 nil)))
cdr - the second element (content of decrement register) tail
(cons 1 (cons 2 (cons 3 nil)))
How to live with immutable things?
Are we really can live without changing variable values?
None
http://valve.github.io/blog/2014/07/04/from-object-to- functional-immutability/ Actually we already do
http://valve.github.io/blog/2014/07/04/from-object-to- functional-immutability/ But we can avoid it
How does it work in functional languages?
None
None
The Tralfamadorians are described as being able to see in
four dimensions, allowing them to simultaneously observe any and every point in the space-time continuum.
https://www.cs.cmu.edu/~sleator/papers/making-data- structures-persistent.pdf
None
Really worth reading
Evaluating space and time.
We all know what O(n) means.
We all know what O(n) means. It means the worst
case.
amor tiza tion
Amortized Analysis is a method for analyzing a given algorithm's
time complexity, or how much of a resource, especially time or memory in the context of computer programs, it takes to execute.
Benefits for web developers
We use Linux
We love Linux
RCU read-create-update libcds concurrent data structures http://libcds.sourceforge.net/
http://tonsky.me/talks/2015-codefest/
Laziness
None
None
None
None
None
None
None
None
None