タグ

Scalaに関するu_wot_m8のブックマーク (58)

  • Optionalをうまく使えないエンジニアをEitherとFor式まで一気に連れて行くエクササイズ - Qiita

    どうも、失敗系モナドが大好きな人です。 OptionとEitherのFor式を紹介するために、ステップを踏んだ演習を考えてみました。 折角考えてみたのできれいにまとめて公開してみようかと思います。 この記事はなに? だれ向け? 普段Javaを書いていて、Optionalをなんとなく使っている後輩達を想定して最初は考えました。 「Java8?よくわからないけど、nullはOptionalにすれば良いのね?」 って理解でnullチェックをisPresentに変えただけの人!いませんか? OptionalをifとisPresentでの条件分岐に使っている様な人は、是非読んでもらいたいです。 他に、Scalaを触ってみたことがある人、触ってみようと思っている人や、Haskellをちょっと触ったことがあるよ、という人も是非目を通してみたください。 この記事ではScalaのOption, Either

    Optionalをうまく使えないエンジニアをEitherとFor式まで一気に連れて行くエクササイズ - Qiita
  • Ammonite

    A modern replacement for the Bash system shell. Provides a systems shell in the high-level Scala language, letting you seamlessly mix system operations with real code without the hassle or the frustration of trying to write complex code in Bash. If you use Ammonite, you will probably find the follow book by the Author helpful in using Ammonite to the fullest: https://handsonscala.com/ Ammonite is

  • ReaderWriterStateモナドと畳込み

  • Do you like Scala? Give Haskell a try! - FP Complete

    The language Scala promises a smooth migration path from Object-oriented Java to functional programming. It runs on the JVM, has concepts both from OOP and FP, and an emphasis on interoperability with Java. As a multi-paradigm language, Scala can flatten the learning curve for those already familiar with OOP, at the price of making some compromises in language design that can make functional progr

    Do you like Scala? Give Haskell a try! - FP Complete
  • Scalaにおけるカリー化と型推論 - xuwei-k's blog

    わりと何回か説明する機会あるので、blogにも貼っておく https://gist.github.com/xuwei-k/81d966bdff21a94a725794f1bf3e2041

    Scalaにおけるカリー化と型推論 - xuwei-k's blog
  • Scala Nativeを動かしてみた(1) - kmizuの日記

    Scala Nativeはscalaのコードを(LLVMのIRを経由して)ネイティブコードにコンパイルするAOTコンパイラ(Ahead Of Time Compiler)です。その存在については、少し前にサイトができていたことで一部で話題になっていましたが、Scala Days 2016 NYCにて正式に公開されました。現在はPre-Release段階ですが、既にサンプルコードを試せるようになっていたので、環境を構築してみました(on Mac OS)。 scala-nativeのリポジトリをcloneする $ git clone git@github.com:scala-native/scala-native.git --recursive git submoduleとしてscala/scalaを持っているので、--recursiveを付けるのを忘れないようにしましょう。 llvm(cla

    Scala Nativeを動かしてみた(1) - kmizuの日記
  • Scala めく春 - Sexually Knowing

    春なので4年前くらいにコップの初版を読んで以来の Scala を書きます。 Scalaスケーラブルプログラミング第2版 作者: Martin Odersky,Lex Spoon,Bill Venners,羽生田栄一,水島宏太,長尾高弘出版社/メーカー: インプレスジャパン発売日: 2011/09/27メディア: 単行(ソフトカバー)購入: 12人 クリック: 235回この商品を含むブログ (46件) を見る Vim vim-scala ensime-vim syntastic vim-scala を入れて構文ハイライトなどを手に入れます。 syntastic syntastic は後述する vim-ensime が syntastic のコマンドを呼んでおり、インストールしていないとエラーが出るので導入しました。 (もともと syntastic を使っていたのですが、非同期実行ができな

    Scala めく春 - Sexually Knowing
  • Scalaのメソッドや関数に関するQ&A - kmizuの日記

    Scala勉強会第170回 in 郷 rpscala.doorkeeper.jp は、サブテーマ「Scalaの言語仕様」であったため、久々に熱弁をふるったところ、特に、メソッドや関数の仕様や区別に関して疑問に思った方が多かったらしく、質問も多かったので、Q&A形式でまとめておきます。 Q: (x1, xN) => body 形式と、{ case pat1 => body1; ... case patN => bodyN }形式の違いは何でしょうか? A: 前者は必ずFunctionN[S1,...,SN,R]型を持つのに対して、後者は期待型(expected type)によって型が異なります: 1: FunctionN[S1,...,SN,R]: この場合、 (x1:S1,...,xN:SN) => (x1,...,xN) match { case pat1 => body1 case

    Scalaのメソッドや関数に関するQ&A - kmizuの日記
  • ScalaMatsuri2016の感想 - xuwei-k's blog

    終わった直後疲れて書く気力がなかったので、今さらながら書く。 時系列で振り返り gakuzzzzさんのRefactoring in Scala ぶっちゃけたいして(すでに大体知ってることなので)聞いてないというか、これに限らず全体的に自分の資料作りなどしていて、発表はあまり聞いてない りりろじさんも似たようなこと言ってたけど、tagged typeやvalue classに関して雑なツッコミだけ入れた tagged typeもvalue classも両方デメリットあるので、パフォーマンスがアレなとき以外は基素直に普通のcase class使えばいい、とだけ覚えておけばいいと思います #ScalaMatsuri 2016-01-30 10:26:37 via Twitter Web Client ChrisさんのScalacの深みへダイブ を聞こうとしたが、立ち見になってしまって、立ち見疲

    ScalaMatsuri2016の感想 - xuwei-k's blog
  • Build, Operate, and Secure Distributed Applications | Akka

    Build, Operate, and Secure Distributed Applications Simpler Concurrent & Distributed Systems Actors and Streams let you build systems that scale up, using the resources of a server more efficiently, and out, using multiple servers. Resilient by Design Building on the principles of The Reactive Manifesto Akka allows you to write systems that self-heal and stay responsive in the face of failures. Hi

    Build, Operate, and Secure Distributed Applications | Akka
  • GitHub - xuwei-k/scalaz-docs: Scalaz Japanese Documentation

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - xuwei-k/scalaz-docs: Scalaz Japanese Documentation
  • 継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita

    継続モナドを使ってPlay FrameworkのActionを作るという話をします。 Play FrameworkはScalaのWebアプリケーションフレームワークであり、Actionはそのコントローラー部分になります。 この記事を読むにあたって継続モナドの知識は前提としませんが、 ある程度のモナドの知識(Scalaのfor構文の使い方、ScalaのモナドがflatMapメソッドで合成できることなど) Play Frameworkの使い方(PlayのActionがどのようなものであるかなど) などの知識は前提とし、説明を省略させていただきます。 話の流れとしては以下のようになります。 コントローラーで継続モナドを使いたい動機 継続モナドとは? なぜコントローラーで継続モナドを使うと便利なのか? 継続モナドとFutureを組み合わせることでエラー処理を整理する 継続モナドを使ったAction

    継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita
  • Scala入門記 - $shibayu36->blog;

    僕はこれまでまともに学習したプログラミング言語がPerlJavaScriptしかなくて、静的言語的パラダイムや関数型パラダイムは概念は知っているものの、それがどう役に立つのか、逆にどういう面で課題がありどのように対処されているのか、などといったことを知らなかった。知らなくてもまあ仕事PerlとJSでやっているので問題ない。しかしすでにこれらの言語から得られる概念的な知識の吸収の速度が鈍化してきていて、このままではエンジニアとしてまずいのではないかという危惧感があった。 そこで静的言語であり、関数型言語であり、また社内でも使われ始めているためサンプルコードがあるScalaの学習をすることにした。 学習するにあたって困ったことは、どういうドキュメントを読み、どのように実践するとScalaの概観をつかめるか分からないということだった。そこで今回は自分の経験を踏まえて、このように入門していくと

    Scala入門記 - $shibayu36->blog;
  • そろそろscalaz 7.2 の final 出すぞ! - xuwei-k's blog

    https://github.com/scalaz/scalaz/issues/1029 誰も言い出さなかったら、もう7.2.0のfinal出すのは、Scala2.12.0のfinalがでる来年の春か夏頃?でもいいかなぁー、せめて2.11.8でて「 コンパイルオプション有効にして、いっそのこと7.2.0ではJava7以下の対応も切ろうぜっ!」って提案してからでいいかなー、と思っていたけど、 そもそも7.1.0のfinal出たのが1年3ヶ月くらい?前なので、逆に誰かがいいだせば、いつ出してもいい頃かな―と思っていたところに、話題出してきた人がいて、runaroramaさん(わりと主要コミッターの一人)が賛成してるので、特に反対意見なければ11月くらい?か、少し遅れたとしても年内には7.2.0のfinal出しちゃってもいいかなー、という気持ちになってきました。 自分がリリース権限持ってるので、

    そろそろscalaz 7.2 の final 出すぞ! - xuwei-k's blog
  • ScalaのOptionとEitherで例外処理を行う方法 - $shibayu36->blog;

    Scalaの例外処理はOptionとかEitherを利用するっぽいんだけど、調べてもいまいちその使い方が分からなかった。いろいろやってみたところ、だいぶ分かってきたので、後から自分で読み返せるようにメモ。 Optionを利用する Optionは値があるかないかわからない場合に、ラップして返してくれるもの。値がある場合はSome()に値が包まれて返ってきて、ない場合はNoneが返ってくる。エラーの内容が特に必要がない場合の例外処理に便利。 パターンマッチで例外処理をする SomeとNoneでパターンマッチすれば例外処理できる。こんな感じ。 val map = Map("a" -> 1, "b" -> 2) map.get("a") match { case Some(n) => println(n) case None => println("Nothing") } map.get("c")

    ScalaのOptionとEitherで例外処理を行う方法 - $shibayu36->blog;
  • sbtにおけるKeyとは何か? 〜 有向非巡回グラフ(Directed Acyclic Graph)とsbt - xuwei-k's blog

    sbtを使ったことがある人なら、たいていSettingKeyやTaskKeyという言葉を聞いたことがあるはずです。もし聞いたことがなくても、1度でもsbtを使ったことがあるなら、すでに知らないうちにそれらに触れているはずでしょう。 それらSettingKeyやTaskKeyを含んだsbtの内部DSLについては、その独特さゆえに、好みが分かれることが多いと思います。 そもそも なぜSettingKeyやTaskKeyという概念が必要なのか? それらは一体何なのか? ということに関して、少し別の視点から考察や解説をしてみることによって、sbt自体の理解の手助けとなることを目的として、このエントリを書いてみます。 なんだか、少しばかり堅苦しい始まり(?)にしてみましたが、つまり 「sbtのKeyは有向非巡回グラフにおけるNodeであり、build.sbtは有向非巡回グラフを組み立てるDSLである

    sbtにおけるKeyとは何か? 〜 有向非巡回グラフ(Directed Acyclic Graph)とsbt - xuwei-k's blog
  • [SDN]List性能問題

    懸案だったMonadic Programming、Functional Reactive Programmingもある程度目処がついてきたこともあり、要件定義で作成されたモデルを実装に落とし込むという流れの中での総合的なScalaプログラミングの方法論をScala Design Noteという切り口で考察していこうと思います。 大昔にJava World誌で「Java Design Note」という連載を書いていましたが、そのScala版をイメージしています。 Scalaを実務に使う場合に注意が必要なのがListの性能問題です。 Scalaでは関数型言語の伝統を踏襲してLispのList由来のListを基データ構造としています。システムの各種デフォルトもListを使う方向になっていますし、文法を説明する場合にもListを使用するケースが多いと思います。 Listは関数型プログラミングとの

  • 【Scala】foldとfoldLeftの違いを知る | DevelopersIO

    はじめに こんばんは! 突然ですが、 Scala における fold と foldLeft はほとんど同じものだ!と思っていませんか? また、Scala の Option#fold メソッドを使って、何か不自然に思ったことはありませんか? 先に結論を述べますと、 fold メソッドと foldLeft メソッドは異なります(もちろん foldRight とも違いますよ!)。 「ちょっとだけ挙動に差が…」的な違いではなく、根的に違います。 たまたま、 List#fold と List#foldLeft が(例外的に)似たような定義で、かつ(例外的に)似たような挙動をするため、誤った通説(全てのfold≒foldLeft)があったりなかったりするようです。少なくとも僕は、Scala を書くようになってからある一定の期間、全ての fold と foldLeft は同じものだと考えていました。

    【Scala】foldとfoldLeftの違いを知る | DevelopersIO
  • 本物のFree MonadPlus? - xuwei-k's blog

    「もう一度来てください。物のFree MonadPlusを見せてあげますよ」 そう言い残してScalaちゃんは去っていった・・・。 というわけで(どういうわけだよ!) 物のFree Monadって存在したのか!?っていうメモを書いておきたいと思います。 いや、実は知ってる人にとっては常識だったのかよくわかりませんが、自分は知らなかったので。 (というかekmett/freeにないなら、そもそも不可能なのではないか?くらいに思ってた) "物の" とはどういうことか?というと、偽者(MonadPlus則を満たさない)が以前 ekmett/free の内部に存在して、自分が指摘したら消えてしまった事件(?)があったのです。 issue報告したらFree MonadPlusが消えた さて、それでなんとなく寝起きでtwitterで流れてきた"ある論文"を読んでいたら、Free MonadPlu

    本物のFree MonadPlus? - xuwei-k's blog
  • [FP] Scalaへの道

    例題勉強会で出たプログラム例をまとめて例題を作りました。 テキストファイル内の欧文単語を単語の長さで以下の三種類に分類してオブジェクトに設定する短 : 3文字以下中 : 7文字以下長 : 8文字以上以下ではこの例題にそって説明していきます。 準備分類した単語を設定するオブジェクトとしてcase classのWordsを中心としたクラスとコンパニオンオブジェクトを用意しました。 例題はテキストファイルを解析して、case class Wordsに解析結果を設定する処理になります。 package sample case class Words( smalls: Vector[String], middles: Vector[String], larges: Vector[String] ) { def +(word: String): Words = { if (word.length <=