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
65
Functional Data Structures
Aliaksandr Lomau
July 02, 2015
Tweet
Share
More Decks by Aliaksandr Lomau
See All by Aliaksandr Lomau
Fails Night
allomov
0
28
"Ya Ne Lochu Comp" Challenge.
allomov
1
73
Catch and Throw in Ruby
allomov
0
32
Mortal Rubizza
allomov
0
59
Рэмбовидная проблема: особенности развития открытых технологий
allomov
0
35
Vault-tec: Safest Future
allomov
0
150
Promises and Reality
allomov
1
46
Cloud Theory for Rubizza Classes
allomov
0
71
Антология деплоя
allomov
0
66
Other Decks in Technology
See All in Technology
20240509 CloudWatch でいろいろなものを監視してみよう
masaruogura
1
120
使われないものを作るな!出口から作るデータ分析基盤 / Data Platform Development Starting from the User Needs
amaotone
16
4.7k
AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6
fujiwara3
6
3.4k
データ分析力を高めるSQL研修サービス『SQL Everyone』
hikarut
1
400
エムスリーQAチーム紹介資料 / Introduction of M3 QA Team
m3_engineering
1
340
TailwindCSSでUIライブラリを作る際のハマりどころ
shuta13
0
230
YJIT Makes Rails 1.7x faster / RubyKaigi 2024
k0kubun
4
500
日本が誇るイタリアのダンスミュージック!? ユーロビートって何??
minorun365
PRO
2
230
シンプルなHITL機械学習と様々なタスクにおけるHITL機械学習
naohachi89
0
320
Dungeons and Dragons and Rails
joelq
0
250
CockroachDB はどのくらい「しぶとい」のか? / How tough is CockroachDB?
kota2and3kan
13
4.9k
OPENLOGI Company Profile for engineer
hr01
1
2.2k
Featured
See All Featured
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
117
18k
The Power of CSS Pseudo Elements
geoffreycrofte
62
5k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
67
14k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Rebuilding a faster, lazier Slack
samanthasiow
74
8.3k
Web development in the modern age
philhawksworth
203
10k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
8
3.5k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
34
6.1k
Ruby is Unlike a Banana
tanoku
96
10k
How GitHub (no longer) Works
holman
305
140k
Building Flexible Design Systems
yeseniaperezcruz
320
37k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
155
14k
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