タグ

ブックマーク / kmizu.hatenablog.com (6)

  • あなたの知らないKotlinのsmart cast(known as Flow-Sensitive Type) - kmizuの日記

    皆さん、Kotlin触っていますか?Kotlinかわいいですよね、Kotlin(どの口がそんなことを言うかって感じですが)。Kotlinにはsmart castという機能があり、安全なキャストができます、というのは不正確で、KotlinはFlow-Sensitive Typeと呼ばれる型システムを持っています。おおざっぱに言えば、制御フローによってある変数や式の型が変わる型システムの総称(だと思います。間違ってたらご指摘願います)Kotlinではそれをsmart cast(と公式ドキュメントには書いてある)と呼んでいるという話のようです。 公式ドキュメントにある例からいくつか引用します: fun demo(x: Any) { if (x is String) { print(x.length) // x is automatically cast to String } } if (x !

    あなたの知らないKotlinのsmart cast(known as Flow-Sensitive Type) - kmizuの日記
  • 株式会社ドワンゴを退職します - kmizuの日記

    はじめに 当初、ScalaMatsuri 2019が終わった次の日の、6月30日に書く予定だったのですが、最終出社日も終わっていることだしよいかということで、エントリを書くことにします。 2019年6月30日をもって、5年と3か月勤めた株式会社ドワンゴを退職します。最終出社日は6月26日でした。 これまで2回転職してきましたが、ドワンゴに居た期間が最長です(なお、5年で最長でというのに違和感感じる人もいるかもですが、博士卒で就職したので、まあそんなもんかと思っています)。 何やってたの 1年目こそプロダクト開発に携わっていたものの、2年目以降は、 Scala研修テキストの執筆やメンテナンス 新入社員研修の中のScala研修講師 ドワンゴ社員として各種イベントやカンファレンスで発表 論文の査読や情報処理学会関連のイベント(主にPRO(プログラミング研究会))への参加 自分主催の勉強会(テーマ

    株式会社ドワンゴを退職します - kmizuの日記
  • 実践Scala入門(共著)が発売されます - kmizuの日記

    https://www.amazon.co.jp/dp/4297101416 企画自体は2015年くらいから始まっていたんですが、紆余曲折あって、約3年経ってしまいました。ともあれ、ようやく出版までこぎつけられてほっと一息です。 実際には多少遅れる可能性がありますが、10月27日から技術評論社さんから発売予定なので、この機会にScalaを勉強してみたい方は、是非予約していただければと思います。 さて、書いてる間の紆余曲折書いても意味がないので、このエントリでは、この書籍のウリを簡単に書きたいと思います。 現状の日語のScala書籍は、大半が新しいバージョンのScalaに追随できてなくて、新しくScalaに入門する人に勧められるいい書籍が ほとんどないという問題意識がありました。いわゆるコップScala書籍の中でもかなり売れていることもあってか、2.12対応の第三版まで出版されているも

    実践Scala入門(共著)が発売されます - kmizuの日記
  • 技術イベント「Understanding Scala」を開催しました(6/10) - kmizuの日記

    Understanding Scala - connpass 昨日、表題の技術イベントを自分主催で行いました。なんでこんなイベントをやろうと思ったかというと「皆、Scalaを難しくめんどくさい方法で学んでるのでは?」という疑問が自分の中であって、その原因として、サンプルプログラムの集合を通して、ボトムアップになんとなくイメージで 全体像を作りあげてるのではという思いがありました。 そのようなアプローチに対して懐疑的な自分としては、このイベントでは(厳密にはやってませんが)どちらかというとトップダウン的アプローチでプログラミング言語について理解してもらおうと思い(もちろん、例は大切なので必要に応じて詳細に下りるのは忘れませんでしたが)、5つの発表の全てを全部自分でやりました。さすがに、5時間程度しゃべりっぱなしというのは疲れましたが、おかげさまで(?)、色々な疑問が解決したとか、メソッドと関

    技術イベント「Understanding Scala」を開催しました(6/10) - kmizuの日記
    mizdra
    mizdra 2017/06/12
  • Scalaでimplicits呼ぶなキャンペーン - kmizuの日記

    はじめのはじめに implicitsは可読性が…という人が居たら、この記事へのリンクを教えてあげていただければと思います TL;DR Scalaには俗に「implicits」と呼ばれる機能がある 実際にはそれらは3つの機能をまとめて指す用語である それぞれの機能は全く異なる 暗黙の型変換は現代では無視してよし 拡張メソッドは、既存の言語でそれを持つのと同じ程度の簡単さである 型クラスとしての用法は、型クラスがある言語を知らないとやや難しいが、積極的に使う価値がある機能である 「implicits」は異なる3つの機能を一つにまとめた呼び方に過ぎず混乱を招くので、使うのをやめよう(個々の機能名で呼ぼう)。また、暗黙の型変換は無視して良いし、拡張メソッドはよく知られているので、型クラスとしての用法にフォーカスして良い はじめに Scalaには俗にimplicitsと呼ばれる機能(群)があります。

    Scalaでimplicits呼ぶなキャンペーン - kmizuの日記
    mizdra
    mizdra 2017/05/20
  • scala.Nothingは何のためにあるのか - kmizuの日記

    scala.NothingはScalaのクラス階層における、「一番下」に位置するクラスで全ての型のサブタイプになるが、これが何のためにあるかという点でつまづく人が時々居るようだ。というわけで、scala.Nothingがあると何が嬉しいのかという点をちょっと説明してみようと思う。 例外やエラーを投げる式のような、戻ってこない計算の型として使う たとえば、次のような、階乗を計算する関数factorialを考えてみよう。factorialはnの階乗を計算する関数で、nを引数に取りnの階乗を計算して返す。また、nは0以上の整数でなければならないものとし、0未満の値が引数として渡されたらIllegalArgumentExceptionを投げるものとする。このとき、factorialの定義は、たとえば def factorial(n: Int): Int = { if(n < 0) throw ne

    scala.Nothingは何のためにあるのか - kmizuの日記
    mizdra
    mizdra 2017/05/13
  • 1