"Don't be a lonely operator!" nilの性質を探る旅 #RubyKaigi #RubyKaigiB

A Nil Device, a Lonely Operator, & a Voyage to the Void Star @ericqweinstein "This talk, framed as an illustrated story around Ruby 2.3's new "lonely operator" (`&.`) for safely handling `nil`, explores the nature of nothingness: what it is, how other programming languages think about it, and how we should treat it in our Ruby codebases (including why—and whether—we need it)."
0
黒曜@Leaner Technologies @kokuyouwind

ぼっち演算子、もしくは安全(safety)演算子。nilのハンドリングとして幾つかの手法がある。Object#tryはメソッドを呼び出した結果かnilが変える。 #rubykaigi #rubykaigiB

2016-09-09 13:49:15
黒曜@Leaner Technologies @kokuyouwind

Null Objectパターンは、nullを返す代わりに空を表すオブジェクトを返す。&.はtryと同じような挙動をする。 #rubykaigi #rubykaigiB

2016-09-09 13:51:03
黒曜@Leaner Technologies @kokuyouwind

他言語との比較。clojureはnilとnil punningがある。HaskellはNothingが、JavaはOptionalがある。 #rubykaigi #rubykaigiB

2016-09-09 13:51:51
hamada @akira_simpson

how can we handle nil? - Active Support's Object#try - Null Object Pattern - &. #rubykaigi #rubykaigiB

2016-09-09 13:52:34
黒曜@Leaner Technologies @kokuyouwind

「ClojureのNilについて。get-inで存在しないキーを取ろうとしたときはnilが返る」 Lisp系だから、nilは空リストと同等かな。 #rubykaigi #rubykaigiB

2016-09-09 13:54:56
黒曜@Leaner Technologies @kokuyouwind

HaskellのNothing。NothingになりうるものはMaybe 'aになる。取れた場合と取れない場合を区別するので、NothingとJustで別の処理が必要 #rubykaigi #rubykaigiB

2016-09-09 13:57:08
m1sogi webエンジニア @m1sogi

#rubykaigi #rubykaigib Rubykaigiに来たらMaybeモナドが出てきた

2016-09-09 13:57:09
hamada @akira_simpson

少しだけ解説されたnull object patternについてqiitaの記事を貼っておく。  #rubykaigi #rubykaigiB qiita.com/kasei-san/item…

2016-09-09 13:57:27
黒曜@Leaner Technologies @kokuyouwind

nil or valueと比較すると、Nothing, Just Nothing, Just(Just Nothing), Just (Just (Just 42))などいろいろな表現がある #rubykaigi #rubykaigiB

2016-09-09 13:59:20
黒曜@Leaner Technologies @kokuyouwind

JavaのNull。Null Pointer Errorを起こしうる。safeGetするには、Optional.ofNullableで包んでorElseGetで取る。 #rubykaigi #rubykaigiB

2016-09-09 14:01:17
sylph01 @s01

Voyage to the "Void Star" って (void *)、voidポインタのことだったのか! #rubykaigib

2016-09-09 14:02:24
黒曜@Leaner Technologies @kokuyouwind

そもそもなぜNULL/nilがあるのか? という導入で「A Voyage to the Void Star」の話。 #rubykaigi #rubykaigiB

2016-09-09 14:02:29
黒曜@Leaner Technologies @kokuyouwind

1965年にALGOL Wで導入されて、ALGOLに影響されてC(->MRI)とJava(-> JRuby)に入った。 #rubykaigi #rubykaigiB

2016-09-09 14:04:40
黒曜@Leaner Technologies @kokuyouwind

Nilがない世界ではmeaningless stateが表現できない。これは素晴らしいが、meaningless stateはしばしば出現しうる。 #rubykaigi #rubykaigiB

2016-09-09 14:06:25
黒曜@Leaner Technologies @kokuyouwind

Null Pointerがない世界があればいいのでは? #rubykaigi #rubykaigiB

2016-09-09 14:07:25
黒曜@Leaner Technologies @kokuyouwind

Nilは強力だが危険で偏在するもの。おそらくnilは必要だが、null pointerが必要ない。Rubyはコミュニティなので、lonely operatorにならないで(これは洒落っぽい) #rubykaigi #rubykaigiB

2016-09-09 14:08:31
hamada @akira_simpson

良いまとめ。 Don't be a lonely operator! Ruby is a community-we're here to learn from each other #rubykaigi #rubykaigiB

2016-09-09 14:08:46
黒曜@Leaner Technologies @kokuyouwind

Haskellの例のJust Nothingみたいな表現は可能だけど、まぁ大抵はbindしてNothingに落とすよね、みたいな話はある。 #rubykaigi #rubykaigiB

2016-09-09 14:10:46
黒曜@Leaner Technologies @kokuyouwind

「JavaScriptのundefinedをRubyのnilみたいに扱うのは良いアイディアだと思う?」「No」 力強い返答だった(質問が英語でちゃんと聞き取れなかったので意味が違うかも) #rubykaigi #rubykaigiB

2016-09-09 14:12:14