[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

Scalaに関するogatatsuのブックマーク (117)

  • Scalaのマクロの基礎。評価タイミング、評価回数と、健全性 - xuwei-k's blog

    Scalaのマクロというより、一般的にマクロに共通する基であり重要な部分です。それをScala使って説明するだけです。 Scalaのマクロは、未だexperimentalという位置づけで、他の機能に比べれば仕様やAPIが変わりやすい状態です。そして、機能が搭載されてからあまり時間が経っていないこともあって*1あまり一般的に使われているとはいえない状態でしょう。しかし、Cなどのマクロとは違い、Scalaのものはある程度は格的にコンパイル時に抽象構文木を自由にいじれるものであり、使いこなせるようになってくるとなかなかおもしろいです。 マクロというと、ある程度の人はLispを思い浮かべると思いますが(?)、先ほど書いた「格的に抽象構文木いじれる」という点はまさにLispと共通する部分もあります(もちろん異なる部分も多くあります)。 つまり、これから説明することは、On Lisp*2 On

    Scalaのマクロの基礎。評価タイミング、評価回数と、健全性 - xuwei-k's blog
  • Scala.js | 天下一AltJS武闘会

    あなたは、Javascript で開発をしようと思って一歩を踏み出したけれど、 まだできていないという状況ではありませんか? もしかして、 Scala は知っているけど JavaScript は使いたくない JavaScript は使っているけどメンテナンスがしんどい 型...型... ・・・このような悩みをお持ちではないでしょうか? このウェブサイトは、これらのお悩みをお持ちのあなたのために作りました。 ScalaJavaScript に変換するツールがあったら、今すぐ欲しい!とあなたがお思いなら、 この先を読む必要はありません。 こちらからお申し込みいただき、このサイトを読む時間を実装にあててください。 さて、 Scala は知っているけど JavaScript は使いたくない JavaScript は使っているけどメンテナンスがしんどい 型...型... このような理由で実装が

    Scala.js | 天下一AltJS武闘会
  • sbtの密結合な内部アーキテクチャ - xuwei-k's blog

    sbtというと、独特なSettingのシステム*1や、Scalaで記述する内部DSL*2ばかりが注目されがちです。それらは、初心者にわかりづらかったりして批判されることが多かったり、逆にsbtを使い慣れた人にとってはとても強力で面白い仕組みです。 Settingのシステムに注目すると、汎用的に色々な言語のビルドにも使えそうに思えます。事実、sbtでC++のpluginを作っている人もいます。 しかし、sbtはあくまで「Scala(とJava)のためのビルドツール」です。 これは「単にScalaをデフォルトでサポートしてる」という意味にとどまらず、おそらく皆さんが思っているよりもずっと深い意味で「Scalaに特化したビルドの仕組み」が内部に備わっています。 今回は、そんな「sbtの内部アーキテクチャ」の紹介をします。 以下、かなり長いです。読み物としては面白いかもしれませんが、単にsbtを使

    sbtの密結合な内部アーキテクチャ - xuwei-k's blog
  • Scala で書く tetrix — Scala で書く tetrix

    Scala で書く tetrix これは 2012年8月に書かれたブログシリーズをもとに、2013年9月に使われたツール群とコードを一新して編纂された。 時折新しいプラットフォームや、新しい考え方、新しいプログラミング言語を探索してみたくなる衝動にかられる。僕が最初に実装してみるのはいつも同じだ。ブロックが落ちてくる某ゲームのクローン。今まで多分 8つの言語、ひとに借りた Palm V、それから Android でも実装した。多分最初に Scala で書いたプログラムも Tetrix だったはずだ。そのうちのいくつかはネットワーク機能があってプレーヤー同士が対戦できた。C# で書いたのには勝手にプレイし続ける AI があった。 最近また Tetrix が書きたくなってきた。Tetrix は難しくは無いけど例題アプリケーションとしては手頃な複雑さがある。例えば、ループや似て異なる演算がいくつ

  • ScalaのReflectionについて、まとめてみる - オマケ - CLOVER🍀

    最後、ちょっと蛇足的に。 これまでに書いたエントリのまとめは、こちらです。 導入編 http://d.hatena.ne.jp/Kazuhira/20130730/1375192075 定義情報取得編 - 1 http://d.hatena.ne.jp/Kazuhira/20130801/1375370390 定義情報取得編 - 2 http://d.hatena.ne.jp/Kazuhira/20130803/1375526971 インスタンス操作編 http://d.hatena.ne.jp/Kazuhira/20130804/1375604912 オマケ http://d.hatena.ne.jp/Kazuhira/20130804/1375607954 現在(Scala 2.10.2)のScalaのReflectionで、注意しておいた方がいいこと、気になったことを少し。 スレッド

    ScalaのReflectionについて、まとめてみる - オマケ - CLOVER🍀
  • sbt 0.13.0 の変更点 · eed3si9n

    2013-07-24 / sbt 概要 互換性に影響のある新機能、変更点、バグ修正 sbt とビルド定義を Scala 2.10 に移行した。 project/plugins/ 内に置かれたプラグインの設定ファイルのサポートを廃止した。これは 0.11.2 より廃止予定になっていた。 set コマンドにおいてセッティングの右辺項内のタブ補完を廃止した。新たに追加されたタスクマクロがこのタブ補完を不要にするからだ。 キーの慣用的な書き方はこれよりキャメルケース camelCase のみとする。詳細は後ほど。 Maven との互換性を正すため、テストのデフォルトの classifier を tests に修正した。 グローバルなセッティングとプラグインのディレクトリをバージョン付けるようにした。デフォルトでは、グローバルセッティングは ~/.sbt/0.13/ に、グローバルプラグインは ~/

  • 翻訳: "Cake Pattern: The Bakery from the Black Lagoon" - Okapies' Archive

    はじめに NEScala 2013 での Daniel Spiewak (@djspiewak) さんの基調講演 "Cake Pattern: The Bakery from the Black Lagoon"(スライド、動画)*1の抄訳です。記事の公開については、講演者の Spiewak さん、および配信元である Marakana Inc. さんに許可を頂いています。Thank you for your great kindness! 講演者の Spiewak さんは、Scala のディープな活用で有名な Precog の開発に携わっている方です。”モナドはメタファーではない (Monads Are Not Metaphors)”の著者でもあります。 この講演は、昨年のブログ記事 "Existential Types FTW" の議論をさらに掘り下げたもので、Precog での "Ca

  • Slick の Documentationを翻訳した - Qiita

    #Slickとは? SlickはTypesafe社によって開発が行われている,Scalaのためのモダンなデータベースラッパーである.データベースにアクセスしながらScalaのコレクションを扱うかのようにデータを操作する事が出来る.また,SQLを直接書く事も可能である. #Slickドキュメント日語訳 翻訳プロジェクト:slick-doc-ja 原文:Slick 1.0.0 documentation 題に関するものはこちらです http://krrrr38.github.io/slick-doc-ja/v1.0.out/slick-doc-ja+1.0.html 追記 Slick 2.0.0のドキュメントも翻訳しています http://krrrr38.github.io/slick-doc-ja/v2.0.out/slick-doc-ja+2.0.html 追記 Slick 3.0.0

    Slick の Documentationを翻訳した - Qiita
  • Scala で型安全なキャスト - xuwei-k's blog

    以下は、Scala2.9ではだめでScala2.10限定です *1 *2 implicit class RichAny[A](val self: A) extends AnyVal{ def as[B <: A : Manifest]: Option[B] = self match { case x: B => Some(x) case _ => None } } ちょっとC# っぽい(?) 使い方は以下のような感じ scala> class A defined class A scala> class B extends A defined class B scala> val b: A = new B b: A = B@42bab86d scala> b.as[B] res0: Option[B] = Some(B@42bab86d) もうちょっと工夫のやりようがありそうなので、なにか

    Scala で型安全なキャスト - xuwei-k's blog
  • Scala2.10.0のDependent method typesと型クラスを組み合わせた『The Magnet Pattern』がヤバい件 - ( ꒪⌓꒪) ゆるよろ日記

    これが……型の力かッ……!! spray | Blog » The Magnet Patternという記事で、「The Magnet Pattern」というデザインパターンが紹介されている。 これは、メソッドオーバーロードで解決していた問題を、型クラスとDependent method typesを組み合わせて置き換えることで、オーバーロードの際の様々な制約(Type Erasureなど)を突破し、より柔軟な拡張性を得ることができるというもの。このパターンでは、引数の型に応じて異なる結果型を返すようにできる。 この記事で、今まで何のために使われるのかわからんかったDependent method typesの有効性が理解でき、あらためて型の力を思い知った。 以前に"Generalized type constraints"(Scalaで&lt;:&lt;とか=:=を使ったgeneraliz

    Scala2.10.0のDependent method typesと型クラスを組み合わせた『The Magnet Pattern』がヤバい件 - ( ꒪⌓꒪) ゆるよろ日記
  • 初めての Scala マクロ · eed3si9n

    2012-08-01 Scala マクロの作者 Eugene Burmako さんが管理する scalamacros.org から “Getting started” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 Eugene Burmako 著 2012年7月31日 e.e d3si9n 訳 1. Scala 2.10 を入手する マクロは 2.10.0-M3 以降の Scala で出荷されている。現行のマイルストーンである 2.10.0-M6 などのマクロが入ったコンパイラを直接ダウンロードするか、Maven や sbt などから参照する。好きな方法を使っていい。 訳注: sbt 0.11.3 を使ったプロジェクトgithub に用意したので、 git clone -b ja https://github.com/eed3si9n

  • 自分が作ったScalaライブラリをMaven Centralリポジトリに登録する方法 (GaedsをSonatype OSSRHにデプロイしたよ\(^o^)/) | PAB@求職活動中

    求職活動中とありますが、活動報告というよりは、技術の話題を多めでいきます。Scalaが大好きなので特にScalaの話が中心になると思います。 最近「Gaeds」というScalaのライブラリを作っているのですが、 Maven Centralリポジトリから使えるようにしたので、 その経験を元にScalaのライブラリをMaven Centralリポジトリに登録する方法を解説したいと思います。 と言っても、他にドキュメントがないというわけではなく、 むしろわかりやすいドキュメントが既にたくさんあるのですが、 ただ手順自体が結構複雑なので、 僕のほうでも情報をまとめておきたいと思います。 まず、おおまかに方法を説明すると、 ライブラリをMaven Centralリポジトリに直接登録するのではなく、 「Sonatype OSSRH (OSS Repository Hosting Service)」とい

  • Scala で g8 や conscript みたいなコマンドを作る - tototoshi の日記

    Scala でちょっとしたコマンドラインツールを作る場合 scalaコマンドで実行 sbt run assemblyしてjava -jar xsbt-start-script-plugin とかが考えられるけれど、 sbt-launch.jar をランチャにする という方法もあります。一番シェルコマンドっぽく使えるんじゃないかな。 ちょっとめんどくさいけど、テンプレでも用意してればよし。 conscript, g8, picture-show とかもこれで動いてます。 以下、作り方。 私の今の心境を反映した、onaka_hetta コマンドを作ります。 build.sbt name := "onaka_hetta" organization := "com.github.tototoshi" version := "0.1-SNAPSHOT" scalaVersion := "2.9.1"

    Scala で g8 や conscript みたいなコマンドを作る - tototoshi の日記
  • Scala でも travis-ci - xuwei-k's blog

    travis-ci http://travis-ci.org/ という、githubと連携して、いわゆる CI(継続的インテグレーション)を簡単に行えるサービスがあります。 もともとRubyのみで始まったらしいんですが、現在はかなりの言語に対応していてScalaでも使えるんですね。*1 たとえば Scalatra とかが利用してます最近、独自jenkinsに移行して利用やめたかも? https://github.com/scalatra/scalatra/blob/0703c7c466e58965f574fd804c40d1ba828c49d9/.travis.yml Scalaでの設定のやり方が書いてある公式ページ↓ http://about.travis-ci.org/docs/user/languages/scala/ 現状sbtの0.11系に対応してるらしいです。一度最初に設定すれ

    Scala でも travis-ci - xuwei-k's blog
  • Scala(Dispatch)でTumblrのAPIを叩く(Conscriptでコマンドを作る編) | PAB@求職活動中

  • 概要

    Aleksandar Prokopec, Heather Miller 著 Eugene Yokota 訳 動機 近年におけるプロセッサ製造業者のシングルコアからマルチコアへの移行のまっただ中で、産学ともに認めざるをえないのは「大衆的並列プログラミング」が大きな難題であり続けていることだ。 並列コレクション (parallel collection) は、並列プログラミングを容易にすることを目指して Scala 標準ライブラリに取り込まれた。 ユーザは低レベルな並列化に関する詳細を気にせず、親しみやすいコレクションという高レベルの抽象概念 (abstraction) を利用できる。 この概念が隠蔽する並列性によって、信頼性のある並列実行が開発者にとってより身近なものになると願っている。 アイディアは簡単だ – コレクションはよく理解されており、よく使われているプログラミングの抽象概念だ。

  • Play2.0のIterateeを理解したい - papamitra

    Play2.0がついにリリースされました。早速ダウンロードしてかねてより興味のあったWebSocketで遊んでみようとしたところIteratee/Enumeratorなるものにぶち当たりました。 とりあえずソースを見てみるもののさっぱり理解できず、google先生に泣きついたところどうやらHaskellから来た概念のようで日語の解説としては以下のページを教えてもらいました。 iterateeとは何か、何が良いのか Enumerator Package – Yet Another Iteratee Tutorial 使ってみよう Enumerator 現時点での理解をもとに簡単な関数から初めてPlay2.0のIterateeに迫ってみたいと思います。 Inputとstep関数 Iterateeは「入力を受け取り何かをする」ということを抽象化したものだそうです。 というわけでまず入力を表すI

    Play2.0のIterateeを理解したい - papamitra
  • Play Framework 2.0 ソースコードリーディングの会 #play_ja で Anorm について話しました - seratch's weblog in Japanese

    Play Framework 2.0 ソースコードリーディングの会 http://partake.in/events/310d72cb-b5b2-4503-98c7-df5887582c27 Reading Anorm 2.0 View more presentations from Kazuhiro Sera @yusukey さんによる録画。声が小さくてすみません。

    Play Framework 2.0 ソースコードリーディングの会 #play_ja で Anorm について話しました - seratch's weblog in Japanese
  • Play 2.0 コードリーディング - プラグインの読み込み - このブログの90%はガラクタ

    最近はボルダリングに嵌っています。 提示された課題に対して、自身が持つリソースを使っていかに解決するかを 考えるのはプログラミングに近い楽しさだなぁ、とは思っていません。 先日、「Play Framework 2.0 ソースコードリーディングの会」でなんか話せって言われました。 http://partake.in/events/310d72cb-b5b2-4503-98c7-df5887582c27 話す内容はまだ決っていません。 そんなわけでPlay 2.0のコードをぼちぼち読み始めているのですが、 折角なのでその内容を残しておこうと思いました。 一人Play Framework 2.0 ソースコードリーディングの会結成の瞬間です。 記念すべき第一回はModule(Plugin)の読み込みです。 いきなりマニアックな部分から始まっているのは僕がたまたま興味があったからです。 Module

    Play 2.0 コードリーディング - プラグインの読み込み - このブログの90%はガラクタ
  • sbt の Android Scala Plugin を Proguard 使わないように改造してみた - xuwei-k's blog

    なんかplugin作りが楽しかっただけで、実用するか、ちゃんとメンテするのかかなりあやしいけれど、Android Pluginのソースコードリーディングと、sbt Plugin の勉強も兼ねて、とりあえずつくってみた https://github.com/xuwei-k/android-plugin/tree/no-proguard https://github.com/xuwei-k/android-plugin/compare/6f6e4b97419f71a7567a8e06953bae09de9ba4ef...no-proguard Proguard 関連のコードは大雑把に消したつもりだけれど、まだ必要ない部分残ってると思う りりろじさんが書いているように http://d.hatena.ne.jp/lyrical_logical/20120320/1332239789 今のところ