Magnolia Tech

いつもコードのことばかり考えている人のために。

2022-01-01から1ヶ月間の記事一覧

「抽象」は分からないことなのか、分かることなのか

そういえば、モデルと抽象と本質が同じ意味っていうの、英語話者とエンジニアだけの感覚ですよね。普通のひと感覚が逆で、モデルは絵に描いた理想にすぎなかったり、抽象はあいまいで意味なく見えるものだったり、原則は例外ありデフォルトって意味だったり—…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その6

blog.magnolia.tech 引き続き気になったこと、調べたこと、忘れないようにメモしたことをまとめていきます。 正格と遅延 標準ライブラリにおける非正格クラス 元々、Scalaの標準コレクションには、Streamという非正格のコレクションクラスが有りましたが、Sc…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その5

blog.magnolia.tech タイトルで言うほどScala3関係無いですね。単に読書メモだと思ってください。 例外を使わないエラー処理 ソフトウェアの複雑度を示すメトリクスに「循環的複雑度」というのがあります。 循環的複雑度 - Wikipedia 簡単に言うと条件分岐や…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その4

blog.magnolia.tech 関数型プログラミングのデータ構造 ……続き foldLeft, foldRight, foldについて この先読み進めていくと延々とfoldRightと、foldRightと、foldが出てきます。’畳み込む’という操作を抜き出し、一つのパターンとして定義しているのは関数型…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その4

blog.magnolia.tech 関数型プログラミングのデータ構造 ……続き foldLeft, foldRight, foldについて この先読み進めていくと延々とfoldRightと、foldRightと、foldが出てきます。’畳み込む’という操作を抜き出し、一つのパターンとして定義しているのは関数型…

『Googleのソフトウェアエンジニアリング』を読んでソフトウェアエンジニアリングとは何かを考える

Googleのソフトウェアエンジニアリング ―持続可能なプログラミングを支える技術、文化、プロセスオライリージャパンAmazon なかなかのボリュームが有って、年末に買ったものの、ちょっとずつ拾い読みしながら進めています。 実は「1章 ソフトウェアエンジニ…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その3

blog.magnolia.tech 前回のエントリの続き。第3章の演習問題を解きます。 関数型プログラミングのデータ構造 第3章は、代表的なデータ構造であるimmutableなListの実装を通じて、概念と操作を理解していく章になっています。 この章をいきなり始めてもよいの…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その2

Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関数型徹底ガイド (impress top gear)作者:Paul Chiusano,Rúnar BjarnasonインプレスAmazon blog.magnolia.tech 前回のエントリの続き。 演習問題を解いていきます。 第1章はざっと読み…

『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その1

昨年末から時間さえ有れば『Scala関数型デザイン&プログラミング』の演習問題の解き直し、というのを久しぶりに(3年ぶり?)をやっていました。 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド作者:Paul Chiusano,Rúnar …

Scala3勉強メモ: enumが作るメソッド

パラメータを取るenumを作ると、case classみたいにいい感じで同値を判定してくれるんだなって思ったらcase classと同じようにequalsを生成してくれていた。 $ cat test.scala package Test enum Color: case Red(coloerName: String) case Blue case class …

Scala3勉強メモ: enumの型推論

scala> enum Tree[+A]: | case Leaf(value: A) | case Branch(left: Tree[A], right: Tree[A]) | // defined class Tree scala> val a = Tree.Leaf("a") val a: Tree[String] = Leaf(a) enumの場合、型推論は親のクラスを導出している。

『オードリー・タン デジタルとAIの未来を語る』

オードリー・タン デジタルとAIの未来を語る作者:オードリー・タンプレジデント社Amazon 出版されてから1年くらい経ってるけど、ようやく読めた。 経歴に、“2005年、プログラミング言語「Perl6(Raku)」開発への貢献で世界から注目”とちゃんと書かれていたの…

決めるために必要なこと

必要以上に悩むのは、情報が足りなくて判断できる状況にないか、情報が無くても決めないといけない場面で問題を先送りしてるだけなので、さっさと情報を集めるか、決定権がある人が決めさせるしかないって話はよくするな悩む時間は一定以上はかけてはいけな…

Dell S2721QS

【Amazon.co.jp限定】Dell S2721QS 27インチ 4K モニター (3年間無輝点交換保証/IPS非光沢/DP,HDMIx2/sRGB 99%/縦横回転,高さ調節/AMD FreeSync™)DellAmazon Dell製モニタの一番安価な27inch モニタ Type-C接続には対応していないし、パネルのスペックも当然…

Dell S2721QS

【Amazon.co.jp限定】Dell S2721QS 27インチ 4K モニター (3年間無輝点交換保証/IPS非光沢/DP,HDMIx2/sRGB 99%/縦横回転,高さ調節/AMD FreeSync™)DellAmazon Dell製モニタの一番安価な27inch 4Kモニタ Type-C接続には対応していないし、パネルのスペックも当…