Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
factor #RC
Livesense Inc.
PRO
August 08, 2012
Technology
0
26
factor #RC
Livesense Inc.
PRO
August 08, 2012
Tweet
Share
More Decks by Livesense Inc.
See All by Livesense Inc.
Tech Award 2021 選出方法
livesense
PRO
0
460
株式会社リブセンス エンジニアリング組織を支える風土と制度
livesense
PRO
0
210
株式会社リブセンス・マッハバイト 採用候補者様向け資料
livesense
PRO
0
47
株式会社リブセンス・転職会議 採用候補者様向け資料
livesense
PRO
0
240
brain.optimizerのレコメンド取得API
livesense
PRO
0
1.3k
リブセンスでのMLシステム開発・運用と 研究・開発アシスタントの取り組み
livesense
PRO
2
1.8k
Argo Workflow による機械学習ワークフロー管理
livesense
PRO
2
2.7k
事業横断組織でのMLシステム開発・運用と基盤設計
livesense
PRO
0
2.5k
Argo Workflow によるMLジョブ管理
livesense
PRO
2
540
Other Decks in Technology
See All in Technology
年700万円損するサーバレスの 認可システムをご紹介します!!
higuuu
3
290
Amplifyで Webアプリケーションの 堅固な土台をサクッと構築する方法
kawasakiteruo
0
200
塩漬けにしているMySQL 8.0.xxをバージョンアップしたくなる、ここ数年でのMySQL 8.0の改善点 / MySQL Update 202208
yoshiakiyamasaki
1
560
Azure DevOps Online Vol.6 - 業務で必要なCIをみんなで考えよう
kkamegawa
0
230
サイバー攻撃を想定したクラウドネイティブセキュリティガイドラインとCNAPP及びSecurity Observabilityの未来
syoshie
1
840
cobra は便利になっている
nwiizo
0
130
今 SLI/SLO の監視をするなら Sloth が良さそうという話
shotakitazawa
0
260
IBM Cloud Festa Online 2022 Summer
1ftseabass
PRO
0
190
Istioを活用したセキュアなマイクロサービスの実現/Secure Microservices with Istio
ido_kara_deru
3
340
質の良い”カイゼン”の為の質の良い「振り返り」
shirayanagiryuji
0
110
Microsoft Data Analytics trends : ”Lakehouse” , ”Data Mesh"
ryomaru0825
2
100
ソフトウェアアーキテクチャの基礎: Software Architecture in a Nutshell
snoozer05
26
8.1k
Featured
See All Featured
Statistics for Hackers
jakevdp
782
210k
Fontdeck: Realign not Redesign
paulrobertlloyd
73
4.1k
Designing the Hi-DPI Web
ddemaree
272
32k
How to name files
jennybc
40
63k
Navigating Team Friction
lara
175
11k
Testing 201, or: Great Expectations
jmmastey
21
5.5k
Keith and Marios Guide to Fast Websites
keithpitt
404
21k
Building a Scalable Design System with Sketch
lauravandoore
448
30k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
39
13k
Designing with Data
zakiwarfel
91
4k
How STYLIGHT went responsive
nonsquared
85
4k
Building Flexible Design Systems
yeseniaperezcruz
310
34k
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
次回のテーマ