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
Livesense Inc.
PRO
August 08, 2012
Technology
0
67
factor #RC
Livesense Inc.
PRO
August 08, 2012
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
27新卒_総合職採用_会社説明資料
livesense
PRO
0
2.4k
27新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
0
6.4k
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
170
株式会社リブセンス 会社説明資料(報道関係者様向け)
livesense
PRO
0
1.6k
データ基盤の負債解消のためのリプレイス
livesense
PRO
0
550
26新卒_総合職採用_会社説明資料
livesense
PRO
0
12k
株式会社リブセンス会社紹介資料 / Invent the next common.
livesense
PRO
2
51k
26新卒_Webエンジニア職採用_会社説明資料
livesense
PRO
1
13k
中途セールス職_会社説明資料
livesense
PRO
0
290
Other Decks in Technology
See All in Technology
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
110
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
450
Data Hubグループ 紹介資料
sansan33
PRO
0
2.7k
あたらしい上流工程の形。 0日導入からはじめるAI駆動PM
kumaiu
5
760
データ民主化のための LLM 活用状況と課題紹介(IVRy の場合)
wxyzzz
2
670
Context Engineeringが企業で不可欠になる理由
hirosatogamo
PRO
3
410
CDKで始めるTypeScript開発のススメ
tsukuboshi
1
330
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
590
入社1ヶ月でデータパイプライン講座を作った話
waiwai2111
1
250
データの整合性を保ちたいだけなんだ
shoheimitani
8
2.9k
なぜ今、コスト最適化(倹約)が必要なのか? ~AWSでのコスト最適化の進め方「目的編」~
htan
1
110
小さく始めるBCP ― 多プロダクト環境で始める最初の一歩
kekke_n
1
350
Featured
See All Featured
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2k
Art, The Web, and Tiny UX
lynnandtonic
304
21k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
1.9k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
170
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
Facilitating Awesome Meetings
lara
57
6.7k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Become a Pro
speakerdeck
PRO
31
5.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.9k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
63
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.4k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
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
次回のテーマ