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
factor #RC
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Livesense Inc.
August 08, 2012
Technology
0
67
factor #RC
Livesense Inc.
August 08, 2012
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_総合職採用_会社説明資料
livesense
0
3.4k
27新卒_Webエンジニア職採用_会社説明資料
livesense
0
7.5k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
0
260
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
1
1.7k
データ基盤の負債解消のためのリプレイス
livesense
0
570
26新卒_総合職採用_会社説明資料
livesense
0
13k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
2
56k
26新卒_Webエンジニア職採用_会社説明資料
livesense
1
13k
中途セールス職_会社説明資料
livesense
0
300
Other Decks in Technology
See All in Technology
わからなくて良いなら、わからなきゃだめなの?
kotaoue
1
370
バクラク最古参プロダクトで重ねた技術投資を振り返る
ypresto
0
170
AWS CDK「読めるけど書けない」を脱却するファーストステップ
smt7174
3
160
フロントエンド刷新 4年間の軌跡
yotahada3
0
480
AlloyDB 奮闘記
hatappi
0
130
楽しく学ぼう!ネットワーク入門
shotashiratori
1
460
The_Evolution_of_Bits_AI_SRE.pdf
nulabinc
PRO
0
230
Kiro Powers 入門
k_adachi_01
0
110
Go標準パッケージのI/O処理をながめる
matumoto
0
220
Lambda Web AdapterでLambdaをWEBフレームワーク利用する
sahou909
0
160
スケールアップ企業でQA組織が機能し続けるための組織設計と仕組み〜ボトムアップとトップダウンを両輪としたアプローチ〜
tarappo
1
120
銀行の内製開発にて2つのプロダクトを1つのチームでスクラムしてみてる話
koba1210
1
140
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
72
Principles of Awesome APIs and How to Build Them.
keavy
128
17k
Testing 201, or: Great Expectations
jmmastey
46
8.1k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Building Applications with DynamoDB
mza
96
7k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.8k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
220
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
The Cost Of JavaScript in 2023
addyosmani
55
9.8k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
680
Balancing Empowerment & Direction
lara
5
950
Transcript
Takuya Shiotari
Factorとは • Slava Pestovが設計と実装 • 連鎖性言語 • 強い動的型付けのスタック指向 • Joy、Forth、LISP、Selfに影響を受けた
• 優れたパフォーマンス • 充実したライブラリ
連鎖性言語と適用型言語 • 引数を関数に適用することに よって評価が行われる • C、Ruby、PHP、Javascript、 Haskell、Java • 1つのデータのかたまりを操作 する関数を複数作成し、この
データのかたまりが関数から関 数へと渡されることで評価が行 われる • 関数の合成は、複数のプログラ ムを連鎖させることによって記 述する • Forth、Joy、PostScript、Cat、 Factor 適用型 連鎖性
• スタック型言語と連鎖性言語は厳密には同じで はないが、ほとんど同じ(おそらく、連鎖性言語 の実装がスタック型言語) • 再帰関数用のコールスタックの他に関数間で値 をやり取りするためのデータスタックを持ってい る • スタック型言語のプログラマが指す「スタック」は
データスタックのこと スタック型言語
Factorのパーサー • ホワイトスペースでトークンに分解される • 大文字・小文字は区別される 2X+ 2 X + 2
x +
基本構文 プログラムはワードとリテラルから構成される ワード 名前付き関数 クォーテーション 無名関数 コンビネータ 高階関数 ボキャブラリー モジュール
10 sq 5 - ! 10 5 はリテラル、sq -はワー ド
ワード定義 : sq ( x -- ) dup * ;
① ② ③ ④ ⑤ ① 必ず「:」から始まる ② 新しいワードの名前 ③ スタック効果宣言(これが引数みたいなもん) ④ ワードの定義 ⑤ 「;」で終了
制御フロー クォーテーションとは評価可能なコードを含むオブジェクトのこと 2 2 + ! 4がスタックに積まれる [ 2 2
+ ] ! クォーテーションがスタックに積まれる : sign-test ( n -- ) dup 0 < [ drop "negative" ] [ zero? [ "zero" ] [ "positive" ] if ] if print ; 制御フローにクォーテーションが使われる
Factorの特徴 var customer = ...; var price = customer.orders[0].price; orders>>
first price>>
Factorの特徴 var customer = ...; var orders = (customer ==
null ? null : customer.orders); var order = (orders == null ? null : orders[0]); var price = (order == null ? null : price); dup [ orders>> ] when dup [ first ] when dup [ price>> ] when
Factorの特徴 MACRO: maybe ( quots -- ) [ '[ dup
_ when ] ] map [ ] join ; { [ orders>> ] [ first ] [ price>> ] } maybe
次回のテーマ