トップページ⇒tech
984コメント291KB

プログラミング言語 Scala 10冊目

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2014/01/25(土) 14:54:02.07
The Scala Programming Language
ttp://www.scala-lang.org/

日本Scalaユーザーズグループ
ttp://jp.scala-users.org/

■前スレ
プログラミング言語 Scala 9杯目
http://toro.2ch.net/test/read.cgi/tech/1364619119/

■Scalaの紹介文(さわり)
Scalaは簡潔かつ優雅で型安全な方法でよくあるプログラミングパターンを表現できるように
設計された汎用プログラミング言語です。
Scalaはオブジェクト指向と関数型言語の特徴をスムーズに統合しておりJavaやその他の言語を扱う
プログラマをより生産的にすることができます。(以下略)
ttp://www.scala-lang.org/node/25

■Scalaに関する書籍(英語)
ttp://www.scala-lang.org/node/959
リファレンスマニュアルや草稿のPDFなども充実しているのでそちらも参照してください。
日本語の資料には、チュートリアルの訳やIBM dW、IT Pro, @ITの連載記事、各々で開かれた勉強会の資料などがあります。
0002デフォルトの名無しさん2014/01/25(土) 15:10:36.80
前スレがいつの間にか埋まってたので立てといた
0003デフォルトの名無しさん2014/01/25(土) 16:44:45.56
               ノ      ゚.ノヽ  , /}      ...
            ,,イ`"     、-'   `;_' '    ..::::::::::::::...
   ,-、  _.._   (        (,(~ヽ'~     ..:::::::::::::::::::::::
 )'~  レー'  〉   ヽ       i`'}       .:::::::::::::::::::::::
 ~つ     '-ー、  i       | i'     ...:::::::::::::::::::::::
 /       <  /     。/   !  ......:::::::::::::::::::::::::    これは>>1乙じゃなくて
/         ~^´     /},-'' ,●::::::::::::::::::::::::::::::::::::
i、        ,i' _,,...,-‐-、/    i  ::::::::  .:::::::::::::
..ゝ        <,,-==、   ,,-,/      .:::::::::::            放射能がうんたら
 )       {~''~>`v-''`ー゙`'~       ..:::::::::                          ........::.
 {        レ_ノ            ..::::::::.                         ......:::::::::
ノ         ''           ..:::::::                        ...::.:...:::::::::
                     .:::::::::                     ...:......:::::::::::: .
                    .:::::::::::.        .....      ..  ..::::::::::::::::::::::::   :::.
                    ::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. ::  ::..
                    .:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :::    ::.
                    ::::::::::::::::: :::::::::::::::::::::::::::::: :::::
                          .::    ::.  :::
0004デフォルトの名無しさん2014/01/25(土) 18:34:17.20
凄く基本的なことを聞くんだけど
scala+Play framework2.0で作ったサービスを公開するには
どういう鯖を借りればいいんだ?
javaが動けばどれでもいいんでする
0005デフォルトの名無しさん2014/01/25(土) 19:01:58.79
お手軽なのは平六かな
0006デフォルトの名無しさん2014/01/25(土) 22:55:32.62
herokuはrootアクセスできなくて面倒みたいな話がある
https://gist.github.com/Gab-km/5660808
0007デフォルトの名無しさん2014/01/26(日) 02:05:44.02
枯れているけどナウくないDbUtils
枯れてないけどナウいScalikeJDBC
JDBCのラッパーはどっちがええの?
0008デフォルトの名無しさん2014/01/26(日) 03:52:37.67
そもそもJDBCのラッパーって必要なのだろうか…
RDBMSとは文字列と数値のやりとりしかしないんだし
0009デフォルトの名無しさん2014/01/26(日) 08:36:24.95
トランザクションなどを上手く抽象化したいというのはあるな。
0010デフォルトの名無しさん2014/01/26(日) 08:47:09.37
jdbcの不完全な点はリゾルトセット取得後もコネクションを保持していなきゃいけないことだ。
これさえ解消されてれば自作ラッパーを作る必要も無かった。
0011デフォルトの名無しさん2014/01/26(日) 09:12:27.57
>>6
まあ、Herokuは開発者に対してrootアクセスを提供しない代わりに色々なサービス(freeプランのは大体制限がきついけど)をaddonとしてコマンド一発で
インストールできるし色々な雑務から開発者を解放してくれるよというものだしね。その代わりにHeroku特有の制限を色々受け入れなきゃいけない
し、Herokuへのデプロイは遅いしとまあ別の苦労を背負わされることでもある

自分で作ったサービスをとりあえず手軽にデプロイして公開したいならHeroku自体は悪くないんじゃないかな。デプロイ作業は確かに簡単だし
0012デフォルトの名無しさん2014/01/26(日) 09:15:27.19
リザルトセットは必要な行をとっととフェッチしてなるべく早く閉じるのが鉄則。
なのでコネクションを保持云々の不満が起こる理由がよく分からん。
0013デフォルトの名無しさん2014/01/26(日) 09:30:11.74
レコードが少ない場合はそれでいいけど,そういう状況ばかりじゃないんだよ。
0014デフォルトの名無しさん2014/01/26(日) 15:16:26.35
scalaのprotected[this]ってrubyのprivate相当なんだな
使いやすいと思うんだけどあんまり話題にならんね
0015デフォルトの名無しさん2014/01/26(日) 16:07:22.54
逆にどこに話題性が?
0016デフォルトの名無しさん2014/01/26(日) 16:58:18.45
「このフィールドはサブクラスにはインスタンスの外からアクセス出来るようにしよう」なんてケースあんま無いんだから
protectedを使う事は大分少なくなるんじゃないかと思うんだが
0017デフォルトの名無しさん2014/01/26(日) 17:58:24.07
いつ使うんだよ
0018デフォルトの名無しさん2014/01/26(日) 18:13:16.32
普通に上位クラスの実装を下位のクラスでも利用させたいとき
普通のprotectedだとインスタンスの外からアクセス出来ちゃう可能性があるけど
そんな意図が無いときはprotected[this]でいいんじゃないかと
0019デフォルトの名無しさん2014/01/26(日) 18:40:37.26
rubyのprivateがprotectedになってるのって
実装の都合上とかで仕方なくそうなってるんじゃなかったか
0020デフォルトの名無しさん2014/01/26(日) 18:58:03.50
Matzもどうしてそうしたか忘れてると言ってた
0021デフォルトの名無しさん2014/01/29(水) 15:13:57.27
ArrayとListを比べると生成時に使うコストがListのほうがはるかに小さいことはわかったんだけど、他はどうなんですかね。
調べてもよくわからないので教えてください。
0022デフォルトの名無しさん2014/01/29(水) 15:16:28.04
ListとSeqの使い分けについて、誰か語ってくれ。
0023デフォルトの名無しさん2014/01/29(水) 15:17:57.91
Scalaのコレクション周りは秘境
0024デフォルトの名無しさん2014/01/29(水) 17:24:34.66
canbuildなんとかを理解したと思ったら翌日には忘れてる
0025デフォルトの名無しさん2014/01/29(水) 17:30:52.62
Listは不変だから部分が共有されるからArrayより速いの?
それとももっとローレベルの話ですか
0026デフォルトの名無しさん2014/01/29(水) 18:44:53.67
可変Listは?
0027デフォルトの名無しさん2014/01/29(水) 20:04:22.48
Listはリンクリストだから固定長かつ不変の時は一般にメモリ消費も速度もArrayBufferに劣る
0028デフォルトの名無しさん2014/01/29(水) 21:06:56.37
Arraybuffer使っときゃいいの?わけわからん
0029デフォルトの名無しさん2014/01/29(水) 21:24:08.50
>>22
関数の引数は基本全部Seq型にしてる
でも戻り値の型もSeqになってしまって、元々の型情報が失われるのは不便
canbuildfromで頑張れば何とかなるみたいだが俺の頭では理解不能
0030デフォルトの名無しさん2014/01/29(水) 21:28:42.65
http://docs.scala-lang.org/ja/overviews/collections/introduction.html
読んどいて損はない
0031デフォルトの名無しさん2014/01/29(水) 21:38:32.74
コレクション+わかりやすく豊富なコレクションメソッド+第一級関数=最強
0032デフォルトの名無しさん2014/01/29(水) 21:43:22.63
.filter()にブール型の関数を渡すというのは割と衝撃的だった
0033デフォルトの名無しさん2014/01/30(木) 02:47:48.00
言語設計者の意図をくめば、ListよりもSeqを使うようにした方がいい。
何故なら、名前が1文字短いから。
ユーザにどんどん使って欲しいからこそ、SequenceでなくSeqにしたに違いない。
0034デフォルトの名無しさん2014/01/30(木) 15:31:15.24
Scalaを学ぶには、言語設計者の気持ちを理解しなければならない…!!
0035デフォルトの名無しさん2014/01/30(木) 16:39:54.35
actorオブジェクトのフィールドにスレッドセーフじゃないもの持たせても大丈夫?
java.sql.Connectionなんだけど
insertに結構時間かかるから非同期にやろうとしてるんだけど
0036デフォルトの名無しさん2014/01/30(木) 19:36:01.73
自分が気を付けてれば問題ない
処理速度とかは知らんけどな
メッセージで送るのはイミュータブルなのがいいよ
0037デフォルトの名無しさん2014/01/30(木) 21:45:28.59
> To successfully use Scala, you need to research the language
> and have a very strong opinion on which parts are right for
> you, creating your own definition of Scala, the good parts.
Scalaを上手く使うには、Scalaの良いパーツを自分で定義しないといけない
0038デフォルトの名無しさん2014/01/30(木) 21:47:32.52
何だその訳w
0039デフォルトの名無しさん2014/01/31(金) 00:09:29.86
scalaってもっとマシな構文にすりゃ流行ってたんだけどね
javaとrubyをセンスのないバカが混ぜて作りあがったカオスがscala
0040デフォルトの名無しさん2014/01/31(金) 00:55:39.95
>>37
マルチパラダイム言語をうまく扱うには、
領域に合った適当な部分言語を考えておかないといけないんだけど
でも結局人のコードを読むことを考えると、言語全体を把握しておかないとダメっていう辺りは
C++と似たような状況になるのかなあと

C++の場合はマルチパラダイムに加えて互換性の制約があるからもっと難しいはずで
そういう意味ではScalaはまだマシだとは思うが
0041デフォルトの名無しさん2014/01/31(金) 01:10:31.63
http://www.scala-lang.org/old/sites/default/files/linuxsoft_archives/docu/files/LangSpec2.8-ja_JP.pdf
言語仕様だけで200ページとかどんなけなんだよ…
これ、ライブラリ抜きなんだぜ?

Scalaはただでさえ仕様がオバケなのに、その上
自由度が高すぎてカオスになりやすいRuby系の文法だからもう無茶苦茶
0042デフォルトの名無しさん2014/01/31(金) 01:41:01.43
scala始めようと思ったけどひき返そうかな。こんなぼくにはpython辺りがよいでしょうか?
0043デフォルトの名無しさん2014/01/31(金) 01:53:15.49
プログラミングから引き返せ
0044デフォルトの名無しさん2014/01/31(金) 02:05:00.67
SQL>PHP>Java>Ruby>Python>c>>scala
0045 ◆QZaw55cn4c 2014/01/31(金) 02:12:13.20
>>44
C++はどこ?
0046デフォルトの名無しさん2014/01/31(金) 02:15:01.75
http://docs.oracle.com/javase/specs/jls/se7/jls7.pdf
200ページでオバケなら670ページあるjavaはどうなっちゃうの?
0047デフォルトの名無しさん2014/01/31(金) 06:43:38.37
そもそも言語を選ぶ時に仕様書のページ数なんて気にする人間はほとんどいない
0048デフォルトの名無しさん2014/01/31(金) 08:55:55.89
CやC++も大概だし、Schemeの倍って考えると意外と小さいな
0049デフォルトの名無しさん2014/01/31(金) 10:06:40.32
仕様書が少ない!じゃあこの言語をを使おう!って人間がこの世にいるとは思えないんだが
0050デフォルトの名無しさん2014/01/31(金) 10:39:08.25
だっておまいらがページ数で脅かすんだもん。
0051デフォルトの名無しさん2014/01/31(金) 12:04:13.46
し、仕様書オバケが出たー!
0052デフォルトの名無しさん2014/01/31(金) 13:40:21.82
>>42
引き返すなら今のうちだぞ…
0053デフォルトの名無しさん2014/01/31(金) 22:47:04.73
scalaで自分が作った関数をprintln()などのように何もせず使えるようにするにはどうすればいいですか?
0054デフォルトの名無しさん2014/01/31(金) 22:56:12.13
何もせずっていうのがちょっとひっかかる言い方だけど
パッケージオブジェクトに置くか、もしくは
例えばobject A { def println() = {略} }って定義ならimport A._とかimport A.printlnすればいいよ
0055デフォルトの名無しさん2014/01/31(金) 23:12:18.91
ありがとうございます。
0056デフォルトの名無しさん2014/02/01(土) 00:27:21.23
前スレにあったeclipseのコンパイル早くなったというのあったけど、intelijやsbtにもネタがあるらしい

sbt0.13.2-M1の新しいインクリメンタルコンパイル試したら素晴らしい結果がでた
http://d.hatena.ne.jp/xuwei/touch/20140110/1389327912

IntelliJ IDEA 13.0.2の新しいScalaコンパイラ – 最大で25%高速化
http://blog.jetbrains.com/jp/2014/01/30/380
0057デフォルトの名無しさん2014/02/03(月) 00:35:27.34
scalatra使ったwebアプリをeclipseで開発したいけどどうしたらええの
0058デフォルトの名無しさん2014/02/03(月) 01:17:42.53
http://www.scalatra.org/2.2/getting-started/ide-support.html
0059デフォルトの名無しさん2014/02/03(月) 03:03:43.51
Scala IDEは、いつになったら、呼び出し元一覧とか出せるようになるの?
0060デフォルトの名無しさん2014/02/05(水) 21:35:39.76
お前らケース文教えて
それか、vipにプログラミングスッドレ立てて
case classの変数マッチ case Class(1, a, b)みたいのって
どう実装されてるの?
冗長な引数があったらダメなの?例えば、角度で370度と10度は同じ意味ですみたいな
0061デフォルトの名無しさん2014/02/05(水) 23:03:08.88
ガード式使えばいけるやろ。
case figuare(_, angle) if angle ==10 || (360 - angle) == 10
とか
0062デフォルトの名無しさん2014/02/05(水) 23:08:38.88
angle % 360 == 10 二番目の条件はこうだったわ
0063デフォルトの名無しさん2014/02/05(水) 23:15:49.08
常にそういう性質持たすならunapplyを自分で実装するか
0064デフォルトの名無しさん2014/02/06(木) 18:27:54.34
身も蓋もない言い方をするとそんな入力値は無効だな。前持って正規化すればいいんじゃないのか。(そういうことではない)
0065デフォルトの名無しさん2014/02/06(木) 21:58:27.96
並列コレクションが有効な場面と無効な場面がよくわかりません
例えば、元々あるコレクションに対する演算ではどのようなものが高速になるのですか?
ソートなどでは意味がありませんよね?
0066デフォルトの名無しさん2014/02/06(木) 22:39:23.33
並列コレクションが有効と確信できる場合以外は無駄だと思った方が良いよ
0067デフォルトの名無しさん2014/02/06(木) 23:02:34.41
並列コレクションってそんな難しい概念かぁ?
何でこんな質問が来るんだろう
0068デフォルトの名無しさん2014/02/07(金) 00:24:27.79
>>65
並列コレクションはコレクションに対する演算を並列化するんじゃない
foreachを並列実行する、ただそれだけ
各要素に対して完全に独立した処理を行うのに使う
0069デフォルトの名無しさん2014/02/07(金) 00:30:25.95
C#/VBのParallelEnumerableと全く同じ概念だからそっちの情報を参照した方が分かりやすいんじゃないか
あっちは変に気取ってないからな
0070デフォルトの名無しさん2014/02/07(金) 01:20:52.80
並列コレクションのどこに気取る要素があるんだよ
0071デフォルトの名無しさん2014/02/07(金) 01:33:57.50
どうでもいいことにいちいち新しい名前を与えたがる
それで覚えることが増える。凡人のやること
0072デフォルトの名無しさん2014/02/07(金) 02:43:44.89
actorモデルが一般化されたりするのかな
オブジェクト指向m9(^Д^)プギャーみたいな
0073デフォルトの名無しさん2014/02/07(金) 04:59:25.39
Actorって、今までスレッド使ってた箇所全てで、Actorに置き換え可能なの?
0074デフォルトの名無しさん2014/02/08(土) 00:00:31.32
>>73
可能だけどループは再帰で置き換え可能ってのと一緒で
メンタルモデル的なのが違うから置き換わらないと思う
0075デフォルトの名無しさん2014/02/08(土) 04:42:10.92
書き込むスレが不適切かもしれませんが御教授ください。
失敗する可能性のある関数failable: A ⇒ Option[A]があり、
それを最初の引数x: Aから漸化式のように連結させ、
List(failable(x).get, failable(failable(x).get).get, failable(failable(failable(x).get).get).get, ...)
と任意の回数*もしくは失敗するまで*続かせるリストを作る関数はどのように定義すればよいのでしょうか。
末尾再帰やscalazのKleisliを利用したreduce(>=>), Iteratorの実装なども考えましたが、いまいちどう書けばよいのか分かりません。
この場合どのように書くべきでしょうか?
0076_uy2.1p02014/02/08(土) 10:30:30.63
rubyなら簡単に出来る

def ary n , h
  return h if n == 0
  ary n-1 , ->{ h.call }
end

p a = ary( 3 , ->{ "a" } )

p a.call
0077デフォルトの名無しさん2014/02/08(土) 12:18:59.01
>>75
逆順のリスト作って最後に反転させるような書き方なら普通に書けない?
0078デフォルトの名無しさん2014/02/08(土) 12:39:53.03
>>75
Streamでやれば?
def failable(x: Int) = Option(x + 1)

def hoge(x: Int): Stream[Int] =
 failable(x) match {
  case Some(r) => r #:: hoge(r)
  case None => Stream.empty
 }

hoge(0) take 5 foreach println
0079デフォルトの名無しさん2014/02/08(土) 13:21:52.98
>>75
Itarator版

def f[A](a: A)(failable: A => Option[A]): Iterator[A] =
 Iterator.iterate(failable(a))(_.flatMap(failable)).takeWhile(_.isDefined).map(_.get)
0080デフォルトの名無しさん2014/02/08(土) 14:05:48.12
>>75
Scalaz

import scalaz.std.stream._
import scalaz.syntax.id._

def f[A](x: A)(failable: A => Option[A]): Stream[A] = unfold(x) { f(_).map(_.squared) }
0081802014/02/08(土) 14:34:11.94
f(_) は failable(_) の間違い
0082デフォルトの名無しさん2014/02/08(土) 14:37:25.47
scalaz勉強しようと思ったらやっぱり公式ドキュメントとソース眺めるくらいしか方法ない?
0083デフォルトの名無しさん2014/02/08(土) 14:40:29.14
ScalazはHaskell勉強したほうが早いのでは
0084デフォルトの名無しさん2014/02/08(土) 14:51:37.60
>>82
独習Scalazは?
http://eed3si9n.com/learning-scalaz/ja/
0085デフォルトの名無しさん2014/02/08(土) 14:55:57.16
scalazって何?
scalaとはまた違うの?
0086デフォルトの名無しさん2014/02/08(土) 14:57:51.02
scalazっていうただのScalaライブラリの名前だよ
0087デフォルトの名無しさん2014/02/08(土) 14:59:07.72
へー、何か凄いんです?
0088デフォルトの名無しさん2014/02/08(土) 17:11:24.29
ちょっと便利な関数とかいろいろ詰め合わせましたみたいな感じのライブラリ
0089752014/02/08(土) 18:25:53.11
みなさんありがとうございました。
>>78,79,80を見て勉強しようと思います。
0090デフォルトの名無しさん2014/02/09(日) 17:23:45.54
スカラ座
0091デフォルトの名無しさん2014/02/11(火) 19:44:29.04
class A protected ()
object A { def make(): A = new B }
class B protected () extends A
これできないけどなんでなの?コンパニオンオブジェクトからコンストラクタにアクセスできない?
0092デフォルトの名無しさん2014/02/12(水) 12:31:57.59
scalax.io って、もう終わってるって事でいいの?
0093デフォルトの名無しさん2014/02/12(水) 14:53:48.87
そもそもscalaが(略)
0094デフォルトの名無しさん2014/02/12(水) 15:31:52.76
始まってすらいないから!
0095デフォルトの名無しさん2014/02/12(水) 15:37:48.64
始まってもないのに終わった言語ということか
0096デフォルトの名無しさん2014/02/12(水) 16:10:32.58
>>91
基本コンストラクタをprotectedにしたんならB自身とそのサブクラスからしかnewできんよ
object Aとclass Bは何の継承関係にもないじゃん?
0097デフォルトの名無しさん2014/02/12(水) 16:27:06.84
http://www.slideshare.net/extempore/a-scala-corrections-library
これakkaみたいにscala本体に取り込まれないかな
0098デフォルトの名無しさん2014/02/12(水) 16:50:57.83
結局、I/Oは、どのライブラリ使えばいいんだよ?
0099デフォルトの名無しさん2014/02/12(水) 17:16:36.98
javaのCommonsIO
0100デフォルトの名無しさん2014/02/12(水) 17:27:34.99
他にもJavaから引っ張ってきたほうがいい、そうせざるを得ない機能ってある?
0101デフォルトの名無しさん2014/02/12(水) 18:14:10.17
scala製ライブラリはまだ数が少ない
文字コード判定ライブラリとかjavaのものしかない
0102デフォルトの名無しさん2014/02/12(水) 18:20:01.82
暗号関係とかDBとか
0103デフォルトの名無しさん2014/02/12(水) 18:57:22.78
>>92
2年間放置されてる?

今は、Java 7 NIO file APIベースがいいと思うんだけど
0104デフォルトの名無しさん2014/02/12(水) 19:17:07.43
>>103
https://github.com/jesseeichar/scala-io
こっちは最後のコミットが6ヶ月前になってるけど
0105デフォルトの名無しさん2014/02/13(木) 17:33:21.46
javaライブラリの知識はもしscalaが消滅しても無駄にならないので
枯れたjavaライブラリをなるべく使うようにしている
0106デフォルトの名無しさん2014/02/16(日) 12:56:53.81
こんにちは。ここで質問させてください。
外部から提供されるクラスAがあり、それをこちらのクラスBが使用している状況です。
さて、クラスAはネットワークライブラリの一部なため、動作が複雑でテストに不便です。
テストのためdependency injectionの手法を使い、クラスAをダミークラスDummyAに置換したいと考えています。
まず継承を使おうかと考えたのですが、そもそも外部のクラスは継承させることができません。(1)
(1)
trait ALike { ... } // 必要な機能をまとめたトレイト
class A extends ALike ... // ←外部クラスだから無理
class DummyA extends ALike...

def task(a: ALike) = ...

そこで、あらゆるクラスを横断的に処理できる型クラスを導入してみようかと思ったのですが、
インターネットで調べてみたところ、*型クラスが実装されている型を引数に取る処理しかできない*(2)ような書かれかたがなされています。
(2)
implicit class HogeHoge extends TypedClass[A] {
def hogehoge(x: A) = ... // ここ。hogehoge(message: String)で受けて内部でAを使いたい
}

この場合どのように書けばよいのでしょうか?こういう用途では型クラスは使えないのでしょうか?
質問が分かりにくくて申し訳ありません。簡潔に書くと、
* importした外部のクラスと内部のダミークラスを交換し、クラスBのコンストラクタ経由でのDIを行いたい
* 具体的には副作用のある「ネットワーク上のホストをあるリストに追加する処理」をするクラスを「リストに追加したふりをしてくれる自前のクラス」に交換したい
よろしくお願いします。
0107デフォルトの名無しさん2014/02/16(日) 14:19:35.67
http://eed3si9n.com/ja/real-world-scala-dependency-injection-di
主に調べたのって、scalaでDIする方法かな?
0108デフォルトの名無しさん2014/02/16(日) 14:21:53.97
http://lab.synergy-marketing.co.jp/blog/tech/scala-で-di-effective-scala-lift-のdi編
http://togetter.com/li/505702
テストと結び付いてると、そのまま参考になるんだけどね。
0109デフォルトの名無しさん2014/02/16(日) 19:16:09.65
トレイトALikeを実装したAdapterをAに噛ませれば
AdapterとDummyAが交換可能になるはず
0110デフォルトの名無しさん2014/02/16(日) 21:09:39.96
真面目な奴ほど、一年に一つ新しいプログラミング言語を覚えよう、とかいうのを
真に受けちゃって、やっぱり今は関数型言語だよね、Scalaって奴がなんかすごいらしい、
とオーム社の買って、カリー化あたりで良い加減面倒になって、新しい発想が身に付いた、
とか勘違いしてるけど、結局やってる仕事や書いてるコードに何も変化はありませんでした、
となってしまうのかな?
0111デフォルトの名無しさん2014/02/16(日) 21:30:52.91
ふと思い出したけど、カリー化ってあんまり使われてないな。
他の関数型言語と違って、括弧分けるところがイケてないからか。
0112デフォルトの名無しさん2014/02/16(日) 21:46:09.98
あれ?カリー化する関数みたいなのなかったっけ?
単純にJavaとの相性がよくないからだけな気がする。
カリー化するとJavaから使いにくいから。
0113デフォルトの名無しさん2014/02/16(日) 22:22:34.06
昔から関数型入門すると、null禁止、代入禁止、副作用を分けるのが身について、
手続き型に戻っても効果があるとは言われてたので、いいんじゃないかな。
ギプスとしては、ocamlやhaskellのがいいかもしれないが、
scalaならそのまま使えるというのがあるのが悩みどころ

Tumblerとドワンゴはphpからscalaいったみたいだけど、phpプログラマの生い立ちが違いそうだね。
http://www.slideshare.net/sifue/developers-summit-2014-play2scalaweb
http://2012.8-p.info/japanese/2/18/tumblr
何にせよ技術レベル底上げするのに、会社として講習会やるべきなんだろうな。

話が逸れるけど、playのscalaテンプレートは、デザイナーフレンドリーじゃないという評価だね。
http://tech.furyu.jp/blog/?p=1884
もともと.net MVCのrazerが元になってるはずだけどそっちでもなんだろうか。
テンプレートエンジンは構造制御に絞るべきというのもよく聞く。
0114デフォルトの名無しさん2014/02/16(日) 22:34:54.17
そんな個人的な意見を取り上げられてもな
ホスト言語のコードを直接埋め込むタイプなだけだ
専用言語ならデザイナーフレンドリーなのか?
そんなもん馬鹿げた思い込みだ
0115デフォルトの名無しさん2014/02/16(日) 22:56:29.62
> 私が英語を読めていないのかもしれないけど、個人的にはこの感覚はあまり共有できていない。表も Scala でもいいんじゃないかと思う。

これと同意見なのかな?
0116デフォルトの名無しさん2014/02/16(日) 22:58:15.14
カリー化より部分適用の方が簡単だから使われてない感じがする
0117デフォルトの名無しさん2014/02/16(日) 22:59:47.26
そういや、play1はGroovyテンプレートだったけど、ドワンゴのは別物なのかな?
0118デフォルトの名無しさん2014/02/16(日) 23:40:34.22
何人かそれなりにScalaに熟練した人に話を聞いたけど、
Play標準のテンプレートエンジンはだいたい評判が良くない気がする

自分で使ってみた感触としては、@の挙動がわけわからんというか、
あんまり思い通りに書けないというか……
0119デフォルトの名無しさん2014/02/17(月) 14:13:08.98
spring mvcより、playの方がメジャーなの?
0120デフォルトの名無しさん2014/02/17(月) 23:12:45.43
Scalaの時点でアレなんだから自分が気に入ったのを使え
0121デフォルトの名無しさん2014/02/17(月) 23:23:13.99
再帰呼出をしないメソッドでも、最後の行以外での途中returnは推奨されないんですか?
0122デフォルトの名無しさん2014/02/18(火) 02:53:45.50
>>121
途中のreturnが必要なほど長いメソッドはなるべく書かない
0123デフォルトの名無しさん2014/02/18(火) 07:39:38.77
>>122
長さって関係ありますか?
def hoge(): Moge = {
if (isA) {
return a
}
if (isB) {
return b
}
return o
}
0124デフォルトの名無しさん2014/02/18(火) 07:45:49.92
>>122
というような、視野を短く切るためのreturnです
途中送信してしまった
0125デフォルトの名無しさん2014/02/18(火) 07:59:41.70
def hoge(): Moge = if (isA) a else if (isB) b else c
0126デフォルトの名無しさん2014/02/18(火) 08:54:09.55
それreturnいらんやろ
0127デフォルトの名無しさん2014/02/18(火) 08:58:10.07
手続き型プログラミングと関数型プログラミングの違いかな

個人的には関数型プログラミング言語なんだから関数っぽく書きたいが、
if式の連鎖は分かり難いのでこんな感じにしてる:
def hoge(): Moge = (isA, isB) match {
  case (true, _) => a
  case (_, true) => b
  case _ => o
 }
拡張性が要るならListにする
0128デフォルトの名無しさん2014/02/18(火) 09:00:48.92
「視野を短く切る」とか言ってる時点で実際はもっと長いメソッド書いてるんじゃね
0129デフォルトの名無しさん2014/02/18(火) 09:05:36.62
>>127
むしろifより読みづらいし書きづらいんじゃないかw
条件の数が多くなると大変だし

どうせmatchを使うならこれでどうか? Lisp系のcondみたいな感じで
() match { case _ if isA => a;case _ if isB => b; case _ => o }
0130デフォルトの名無しさん2014/02/18(火) 18:37:49.57
うん、それは無い
0131デフォルトの名無しさん2014/02/18(火) 19:07:58.15
>>128
>>124です
Java畑ですが「1メソッド20行以内」はなるべく守ってますよ
だから先の例のifブロック内が複雑だとしたら、1ブロック毎にメソッドに切り出したりしますよ
もし2択で済むなら三項演算子使いますよ
他にはなんだろう、ネストを浅くしたいとかもあります

周りに関数型言語やってる人いないし、ベストがよく分かんないです
ループを末尾再帰で考えるってのは、出来てきた気がします
0132デフォルトの名無しさん2014/02/18(火) 19:42:58.66
ラムダ関数をよく使うので
どこへのreturnなのかがわかりにくいので使いたくない
0133デフォルトの名無しさん2014/02/18(火) 20:54:21.97
むしろreturn非推奨って誰が言い出したの?
0134デフォルトの名無しさん2014/02/18(火) 21:48:31.97
関数型プログラマ
0135デフォルトの名無しさん2014/02/18(火) 22:06:39.58
実際ほとんど使わないよねreturn
0136デフォルトの名無しさん2014/02/18(火) 23:07:46.98
>>131
関数型言語ってHaskellしかまともに触った事がないんだけれど、
Haskellではifは関数なので必ずelseが必要だったから、それと同様に必ずelse書いてる。

あってる間違ってるは分からないけど、ifにelse付けてる限りはreturn要らない感じはする。
あと単純なifでもついついmatch使ってしまう。
0137デフォルトの名無しさん2014/02/18(火) 23:11:14.81
Haskellのifは関数じゃないぞ
0138デフォルトの名無しさん2014/02/18(火) 23:38:58.36
純粋関数ならいいが、副作用の後のreturnを省略するのは
マジで気持ち悪いしわかりにくいからやめてほしい
0139デフォルトの名無しさん2014/02/20(木) 21:36:17.45
ifは関数というよりも演算子かなぁ
0140デフォルトの名無しさん2014/02/21(金) 23:40:46.05
まあ演算子も関数だから間違ってないね
0141デフォルトの名無しさん2014/02/22(土) 02:10:12.27
Haskellのifは構文であって関数でも演算子でもないぞ
0142デフォルトの名無しさん2014/02/22(土) 02:50:16.56
Haskell文法的には式扱いだったはず
意味論的にはλ計算がベースだから全部関数だーとか言い始めたら
まあそうかもしれないけどあんまり実入りのない議論に……
0143デフォルトの名無しさん2014/02/22(土) 15:01:41.45
statmentではなくexpressionなので個人的には文より式の方がしっくりくる
0144デフォルトの名無しさん2014/02/24(月) 18:17:06.06
C、Objective-C、ruby、pythonをやってきたんだが
javaやらずにscalaって難しい?
入門書いくつかチラ見したがjava経験者向けに説明してる感じで焦った
java未経験者におすすめの本とかないかな?
0145デフォルトの名無しさん2014/02/24(月) 19:06:55.25
そんだけやってきたならJavaなんかサンプルコードをしばらく眺めたら十分理解できるはず
悩んでる暇があったら一時間で十分だ
身構えるようなことではない
0146デフォルトの名無しさん2014/02/24(月) 19:08:35.56
Javaをやってないならscalaなんか何一つうれしくないだろ
0147デフォルトの名無しさん2014/02/24(月) 19:24:34.03
遅くないRuby感覚の言語としては価値がある
まあ結局何をするにもJavaの情報に頼るから、Javaが読めないとまず何も作れないし
Java由来の妙な部分が受け入れられなくてクソ言語に感じるだろうね
0148デフォルトの名無しさん2014/02/24(月) 19:53:40.03
コップとかならJava知らんでも理解できると思うけど、いざ運用しようとなると無理だろうな
0149デフォルトの名無しさん2014/02/24(月) 20:33:37.24
>>144
CやらずにObjective-Cって難しい?
0150デフォルトの名無しさん2014/02/24(月) 21:02:08.44
>>149
Objective-Cでもポインタからは逃げられない
0151デフォルトの名無しさん2014/02/24(月) 21:46:00.48
java知ってるほうが嬉しいよね
javaではくっそめんどくせぇのにscalaだと楽だなって感じで
0152デフォルトの名無しさん2014/02/24(月) 21:50:19.81
javaからそのままscalaに行くとそうでもないけど、
途中にCとかhaskellとかが入ると、scalaの起動の遅さにイライラする
0153デフォルトの名無しさん2014/02/24(月) 23:25:29.72
scalaの起動って何のこと?

それはそうとjava知ってるとscalaに限らず大抵の言語が素晴らしく感じる
でも今からjavaを知ることになる人は不幸だと思う
0154デフォルトの名無しさん2014/02/24(月) 23:27:39.12
scala と scalac と scalaのload が遅い
0155デフォルトの名無しさん2014/02/24(月) 23:33:50.06
ScalaはJava使いにとっては最高の関数型言語なんだと思う
近い将来、ScalaがJavaを置き換える存在になるという言葉も、
その可能性を(個人的には)認めたい
ただし逆の見方をすれば、Javaを使っていない人から見ると
関数型言語としてのScalaは魅力に欠ける
0156デフォルトの名無しさん2014/02/25(火) 00:05:13.59
javaはマジでクソ言語。
c#とか似てるって言われるけどjavaと同じって言われるなんてc#が可哀そう
0157デフォルトの名無しさん2014/02/25(火) 00:08:52.42
多分関数型言語で一番無難なのはocamlな気がする
構文は冗長だけどhaskellよりはだいぶ敷居が低いと思う
個人的にはschemeが覚えること少ないし簡単だと思うんだけど
人に進めてもlispってことで拒否感出す人も多いからな。。
0158デフォルトの名無しさん2014/02/25(火) 03:37:19.03
ocamlは構文がフランスすぎるから駄目
0159デフォルトの名無しさん2014/02/25(火) 06:58:43.43
schemeは関数型言語っていうかlispだろ
0160デフォルトの名無しさん2014/02/25(火) 08:34:36.88
ocamlはutf-8が標準じゃないのできつい。
GUIも作りにくいし
実用をためらう

なのでocaml使うならF#だわ
0161デフォルトの名無しさん2014/02/25(火) 18:46:57.02
f#はライブラリとideとguiの作りやすさが関数型言語だと最強レベルになりそうだけど
unix環境じゃ流行らなそうなのが気はする
0162デフォルトの名無しさん2014/02/25(火) 22:39:01.27
unix環境で実用を考えるならScalaで満足している。
windowsでもScalaで満足しているけど。

ToyならHaxeかなぁ
使ってみたことないけど
0163デフォルトの名無しさん2014/02/25(火) 23:44:41.70
>>161
ありがとう!
ウチはMacだが早速F#拾ってきた。

Scalaは1.7,1.8のJavaでトラブルだし
そろそろ見切り時かもだった。
0164デフォルトの名無しさん2014/02/26(水) 00:04:08.46
ClojureがML系だったらなあ
いくら闇鍋ScalaよりずっとクリーンでもLispじゃ普及は望めないよね
0165デフォルトの名無しさん2014/02/26(水) 00:20:37.40
lispはいい言語だけどバカに使わせるとゴミみたいなコードになる
でもポール・グレアムみたいなlispのすごい人は少数のハッカーでやるのが良いって言ってるし
clojureの開発陣も門戸広げてバカが来ることなんて望んでないんだろ
0166デフォルトの名無しさん2014/02/26(水) 20:25:54.38
Lispは再起の勉強にはイイ言語だけれども、
状態遷移の塊でしかないという現実を反映していない
0167デフォルトの名無しさん2014/02/26(水) 21:54:46.34
なんだそりゃ……
0168デフォルトの名無しさん2014/02/27(木) 00:34:17.20
こいつはPure Lisp原理主義者だ!
0169デフォルトの名無しさん2014/02/27(木) 00:45:53.34
LISPは解散しました
0170デフォルトの名無しさん2014/02/27(木) 00:48:24.22
破壊的代入のできるLispはともかく、
代入できない純粋関数型のHaskellとかでも状態遷移は表現できるんだよー
0171デフォルトの名無しさん2014/02/27(木) 00:57:32.05
時間積分を使うシミュレーション(ゲーム含む)を関数型で作るなら
やっぱり漸化式の形で書くことになるの?
それだともうほとんど関数型の意味ないね
0172デフォルトの名無しさん2014/02/27(木) 01:02:18.05
漸化式って再帰ってことか?
foldで抽象化できるじゃん
0173デフォルトの名無しさん2014/02/27(木) 01:08:09.92
>>170
状態がないのに状態遷移が表現できるってのは
哲学的というかメタ的というか
日本語でも英語について語ることができますみたいな
そりゃそうかも知れないけど
日本語で語られる英語って英語なの?みたいな
0174 ◆QZaw55cn4c 2014/02/27(木) 02:57:24.09
つ再帰関数、不動点コンビネータ
すべての状態遷移は再帰で表現できますよ〜ペアノにより自然数の定義とか
0175デフォルトの名無しさん2014/02/27(木) 07:27:55.31
>>173
あたかもプログラミング言語上は
状態を書き換えていないかのように振る舞うというだけであって、
実際上は、状態にあたるメモリを書き換える代わりに新しい所に書いてるだけ

なにしろ最終的には、機械語の命令列とメモリの読み書きにしないと計算機上で動かんので、
この手の変換はJVMも含めてありふれてる
自然言語的な混乱とはぜんぜん違う話だと思う
0176デフォルトの名無しさん2014/02/27(木) 08:17:39.44
でそれが関数型なのか?ってことでしょ
そういう理屈なら全ての手続き型は関数型と見做せることになるよ
0177デフォルトの名無しさん2014/02/27(木) 09:42:55.10
それが「モナド」。(純粋)関数型言語の上に、手続きというモデルを再構築したもの。
0178デフォルトの名無しさん2014/02/27(木) 18:44:55.34
オブジェクト指向の機能を使ったからオブジェクト指向だ!
とか抜かしてるよくいるバカと一緒だな
0179デフォルトの名無しさん2014/02/27(木) 19:50:58.91
Scalaだと関数型意識してクラスもイミュータブルにするん?
面白そうだけどクラスタ構成するような規模じゃないと意味無さそう
0180デフォルトの名無しさん2014/02/27(木) 21:10:43.11
>>179
case class って書くと勝手にイミュータブルになるしあまり気にした事がないなぁ。
凄い人たちはちゃんと気にしてるんだろうけど。
0181デフォルトの名無しさん2014/02/27(木) 23:09:49.69
モナドはオタク的自己満足のために余分なレイヤーを重ねているだけという印象が強いな

ミュータブルはオブジェクト指向、イミュータブルは関数型でまとめたocamlの方が素直に思える。
0182デフォルトの名無しさん2014/02/27(木) 23:33:27.42
sbtにcache proxyを設定したくて、LAN内に置いたnexusやArtifactoryを設定してみるんだけど、
全然うまく行かない。
下の記事の通りにやっても、中途半端にしか成功しない。
http://engineering.clever-cloud.com/sysadmin/2013/11/30/set-up-sbt-for-proxy-use.html

いつもJava用のライブラリは、うまく取ってこれるんだけど、Scala用のJARファイル名にバージョン番号が
入ってるようなライブラリがエラーになる。ちゃんと設定出来てる人居る?
0183デフォルトの名無しさん2014/02/27(木) 23:36:59.90
外部の実行ファイルをプログラムに同梱し、その同梱ファイルを実行した結果を取得するということは可能でしょうか?
0184デフォルトの名無しさん2014/02/28(金) 00:58:47.80
何故このスレでそういう質問をするのか謎
他にふさわしい場所いくらでも有るだろうに

実行ファイルをテンポラリに書き出して実行すればいいだけじゃね
0185デフォルトの名無しさん2014/02/28(金) 08:01:02.53
普通に考えてScalaでやりたいからじゃね?
可能かどうかで言うと可能だし、やり方はいくらでもあるけど、
どういう状況でもっと具体的に何がしたくて、
何で詰まってるか分からないとアドバイスは難しいよね。
0186デフォルトの名無しさん2014/02/28(金) 11:48:36.52
おそらくコプロセスの標準ハンドルをどうこうしたいということだろうけど
javaで探したほうが早いな。
0187デフォルトの名無しさん2014/02/28(金) 16:27:37.14
>>113
playは大分前に少し勉強してみただけだから詳しくは言えないが、.netのrazorの場合、vsの補完が強力で@を変に使ったらその場で警告が出るので、razorの文法を理解してなくてもなんとかなる
0188デフォルトの名無しさん2014/02/28(金) 21:11:38.46
禅の心でコーディングすれば、VisualStudioなんて不要
0189デフォルトの名無しさん2014/02/28(金) 22:23:01.43
好き嫌いはともかくVisualStudioのIDEとしての完成度の高さはやっぱすごいと思う
0190デフォルトの名無しさん2014/02/28(金) 23:01:23.15
好き嫌いはともかくJavaの業務系での実績の多さはやっぱすごいと思う

「好き嫌いはともかく」と付ければ何とだって言える
結局人間ってのは好きか嫌いかだ
0191デフォルトの名無しさん2014/02/28(金) 23:10:46.00
自分で作って自分で売るんじゃない限り好き嫌いなんかどうでもいいだろ
生産性の低い言語を使って困るのは客や会社であってプログラマじゃない
0192デフォルトの名無しさん2014/02/28(金) 23:11:32.22
好き嫌いはともかく中国は島国だと思う

ほんと?
0193デフォルトの名無しさん2014/03/01(土) 04:12:48.47
むしろ好き嫌いはともかくとつけると言えること狭くなるような
0194デフォルトの名無しさん2014/03/01(土) 04:58:10.34
このスレは母国語も危うい馬鹿しかいないのか?

>>189において「好き嫌いはともかく」ってのは補助的な役割しか果たしていない。
メインは「すごい」と「思う」だよ。
具体的な数値を提示しなければ何とでも言えるし、評価の指標を設定することすら難しい内容。
それに加えて「思う」の主格がないために「一般的に思われている」との錯覚を与えている。
「好き嫌いはともかく」ってのはそれを強化しているに過ぎない。

好き嫌いはともかく日本の政治家はリーダーシップがあると思う
好き嫌いはともかく地球は太陽系で最も美しい星だと思う
好き嫌いはともかくアキバ系アイドルは可愛いと思う
好き嫌いはともかく2chの運営は優秀だと思う
0195デフォルトの名無しさん2014/03/01(土) 05:12:48.04
主格がないために「一般的に思われてる」との錯覚を与えている(キリッ
0196デフォルトの名無しさん2014/03/01(土) 08:25:09.45
お疲れですねw
0197デフォルトの名無しさん2014/03/01(土) 08:57:58.46
そういう中身の無い議論はHaskellスレで頼む
0198デフォルトの名無しさん2014/03/01(土) 09:50:19.27
haskellスレ荒れすぎて辛い
0199デフォルトの名無しさん2014/03/01(土) 14:57:39.76
junitでscalatraのテストのやり方教えて
0200デフォルトの名無しさん2014/03/01(土) 15:12:38.08
ScalaTest, Specs2, ScalaCheck じゃだめなんだよね。一応確認
0201デフォルトの名無しさん2014/03/01(土) 15:16:56.66
junitやないとあかんのや
馴染みのある奴やないと嫌やねん
0202デフォルトの名無しさん2014/03/01(土) 15:51:59.97
ツール連携ができなくて無理とかそういうんじゃなくて
馴染みがあるとかそういうレベルの話なの
むしろよくその状態で Scalatra や Scala に手をだそうとしたなと感心してしまう
0203デフォルトの名無しさん2014/03/01(土) 16:04:11.82
むしろ実在するかも疑わしい人物像を作り上げて感心してしまう
202の想像力に感心してしまう
0204デフォルトの名無しさん2014/03/01(土) 16:25:42.02
というかJavaとの親和性が魅力のScalaのスレで
「馴染みがある」を軽視する発言はどうかと
0205デフォルトの名無しさん2014/03/01(土) 16:32:07.72
>>182
この件、やっと自己解決したよ。

Artifactoryのリモートリポジトリ設定で、"Suppress POM Consistency Checks"をオンにすれば、
Scala用の、パスにコンパイラバージョン番号が入るJARファイルでもエラーにならなくなる。
エラーログは出まくるけど。
0206デフォルトの名無しさん2014/03/01(土) 18:03:55.52
scalaはjavaみたいに書けるけどjavaみたいに書くとダサイとか言われる謎言語だからしょうがないね
0207デフォルトの名無しさん2014/03/01(土) 21:58:59.50
>>204
Javaとの親和性は、1からすべてのライブラリをScalaで作らなくてもいい、段階的にでも移行できるって話だ
すでに Scalatra/Scala と親和性の高い test framework があるのだから、そっち使ったらどうなのってだけだ
0208デフォルトの名無しさん2014/03/02(日) 01:04:16.89
そっち使ったらどうなのって「だけ」で
人を小馬鹿にするからつっこまれたんじゃ?
0209デフォルトの名無しさん2014/03/02(日) 03:02:36.33
まぁでも>201はJavaやってた方が幸せだと思うけど
0210デフォルトの名無しさん2014/03/02(日) 04:30:35.22
Scala extends Java
0211デフォルトの名無しさん2014/03/03(月) 10:32:28.95
eclipseのScala IDEってどれくらい進化してるん?
0212デフォルトの名無しさん2014/03/03(月) 12:29:16.11
>>211
諦めて、 IntelliJ IDEA使うよろし
0213デフォルトの名無しさん2014/03/03(月) 12:36:55.76
>>212
UIが不安定なイメージが・・・

とりあえずJavaソースと混同してもリファクタリングがちゃんと働いてくれるのが理想なんですが
0214デフォルトの名無しさん2014/03/03(月) 13:34:54.47
def using[T <: {def close()}](x:T)(f:T => Unit) =
try { f(x) } finally { x.close() }
こんなのやりたいんだけど構造的サブタイピング使うと遅くなる?
0215デフォルトの名無しさん2014/03/03(月) 16:40:41.40
Structural Subtypingはリフレクションの機能使って実装されてるからその分のコストはかかるよ
0216デフォルトの名無しさん2014/03/03(月) 20:18:26.99
intellijはuiがjavaだからもっさりなんだよな
ネイティブのuiと違和感大きいし
0217デフォルトの名無しさん2014/03/03(月) 20:48:19.97
同じ理由でNetbeansも苦手だわ
0218デフォルトの名無しさん2014/03/03(月) 21:23:46.00
IntelliJはそこまで重くない気がするけど、
文字列リテラルにも補完をかけようとするのか、ガクッと遅くなることはある
あとデフォルト設定だとカーソルが浮くのとか、細かい部分が積み重なって
微妙な不快感につながってるのかも

とはいえ、ベースが売り物なだけあって完成度は高いと思う
0219デフォルトの名無しさん2014/03/03(月) 21:24:19.02
貧弱ゥ、貧弱ゥ
0220デフォルトの名無しさん2014/03/04(火) 21:44:09.36
InteliJはリファクタリングの動作が安定してて良いよね
特にメンバ変数名変えたときに、名前付き引数使ってる部分をちゃんと追従してくれる

でも、名前付き引数って内部ではデフォルトコンストラクタ後にsetter使ってるだけだから
EclipseGroovyではwithで代入するようにすれば良いだけかも
0221デフォルトの名無しさん2014/03/05(水) 10:48:53.85
でもIntelliJはモジュール間(Eclipseのプロジェクト)で
リファクタリング反映してくれないのが
0222デフォルトの名無しさん2014/03/05(水) 17:09:08.19
ルックアンドフィールがおかしい
ファイル選択ダイアログとかJavaでUI作ってるのまるわかり
0223デフォルトの名無しさん2014/03/05(水) 22:15:10.99
IntelliJは、UIはアレだが、実用性が高い。
0224デフォルトの名無しさん2014/03/05(水) 23:33:22.94
プロジェクトの感じ苦手なんだけどみんなはどうなの?
sbtでゴリゴリやってたりするの?
0225デフォルトの名無しさん2014/03/05(水) 23:46:18.84
ScalaはIDEに完全に管理されて補完がバリバリ動いてこそだろ
Scala自体はともかく、Javaのゲロみたいなライブラリを補完や動的チェックなしで使うのは苦行
0226デフォルトの名無しさん2014/03/09(日) 14:35:12.06
現在プログラム板のID制導入の投票を実施中です
よろしくお願いします

プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
0227デフォルトの名無しさん2014/03/09(日) 16:01:41.71
>>225
マクロ対応してるIDEってあるかな?
0228デフォルトの名無しさん2014/03/10(月) 11:58:02.13
scalatraってservletのラッパーだから
サーブレットの機能も使える?
WEB-INF/web.xmlにフィルタ追加したいです
0229デフォルトの名無しさん2014/03/12(水) 20:41:55.44ID:WNHX0k15
The outer reference in this type XXX cannot be checked at run time.

この警告ってどういう意味ですか?
0230デフォルトの名無しさん2014/03/13(木) 00:51:32.46ID:yfVBSL8u
http://stackoverflow.com/questions/16450008/typesafe-swing-eventsthe-outer-reference-in-this-type-test-cannot-be-checked-a
0231デフォルトの名無しさん2014/03/13(木) 16:17:49.13ID:j0o71mYX
Play! framework 2.2.3で開発してるけど、リクエストのエンコーディングがUTF-8で決め打ちになっているのが困る。
SJISのリクエストが来ても正しくエンコーディングできない。
リコンパイルするしか対処法はないのかなあ。PaaSとかにデプロイしたいからあまりPlayには手を加えたくない。
たいていのPaaSは標準のPlayしか利用できない。
0232デフォルトの名無しさん2014/03/13(木) 22:56:58.71ID:jchWpC25
PR送れば?
0233デフォルトの名無しさん2014/03/29(土) 15:15:02.64ID:iSspUegM
import java.io.File
import java.net.URL
import org.apache.commons.io.{FileUtils, FilenameUtils}
val urlRe = """(?i)h?ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+\.(jpg|jpeg|png|bmp)""".r
val imgDir = new File("img")
val encoding = "Shift_JIS"
def エロ画像収集(url: String) = {
if (!dir.exists()) dir.mkdir()
val urls = io.Source.fromURL(url, encoding).mkString.split("\n").map(s => urlRe.findAllIn(s).toList).flatten
val fixedUrls = urls.map(s => if (s.startsWith("ttp")) "h" + s else s)

fixedUrls.par.foreach{ url =>
def recur(n: Int): Unit = {
val name = FilenameUtils.getName(url)
val file = new File(imgDir, + name)
try {
if (!file.exists()) FileUtils.copyURLToFile(new URL(url), file)
} catch {
case e: java.io.FileNotFoundException =>
case e: java.io.IOException =>
if (n < 3) {
java.lang.Thread.sleep(3000)
recur(n + 1)
}
}
}
recur(0)
}
}

def test_エロ画像収集() = エロ画像収集("""http://pele.bbspink.com/test/read.cgi/ascii2d/1394675699/";"")
0234ver22014/03/29(土) 15:31:22.62ID:iSspUegM
import java.io.{File, FileNotFoundException, IOException}
import java.net.URL
import java.lang.Thread
import org.apache.commons.io.{FileUtils, FilenameUtils}
import java.util.concurrent.atomic.AtomicInteger
val urlRe = """(?i)h?ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+\.(jpg|jpeg|png|bmp)""".r
val imgDir = new File("img")
val encoding = "Shift_JIS"
val count = new AtomicInteger()
def エロ画像収集(url: String) = {
if (!dir.exists()) dir.mkdir()
val urls = io.Source.fromURL(url, encoding).mkString.split("\n").map(s => urlRe.findAllIn(s).toList).flatten
val fixedUrls = urls.map(s => if (s.startsWith("ttp")) "h" + s else s).distinct
fixedUrls.par.foreach{ url =>
def recur(n: Int): Unit = {
val ext = FilenameUtils.getExtension(url)
val file = new File(imgDir, count.incrementAndGet().toString + "." + ext)
try {
if (!file.exists()) FileUtils.copyURLToFile(new URL(url), file)
} catch {
case e: FileNotFoundException =>
case e: IOException =>
if (n < 3) {
java.lang.Thread.sleep(3000)
recur(n + 1)
}
}
}
recur(0)
}
}
def test_エロ画像収集() = エロ画像収集("http://pele.bbspink.com/test/read.cgi/ascii2d/1394675699/";)
0235デフォルトの名無しさん2014/03/29(土) 18:32:52.55ID:H5CN7Obn
>mkString.split("\n")
ここgetLinesでよくね
0236ver32014/03/29(土) 23:39:16.57ID:iSspUegM
import java.io.{File, FileNotFoundException, IOException}
import java.net.URL
import java.lang.Thread
import org.apache.commons.io.{FileUtils, FilenameUtils}
val urlRe = """(?i)h?ttps?://[\w/:%#\$&\?\(\)~\.=\+\-]+\.(jpg|jpeg|png|bmp)""".r
val imgDir = new File("img")
def エロ画像収集(url: String) = {
if (!dir.exists()) dir.mkdir()
val urls = io.Source.fromURL(url, "Shift_JIS").getLines.map(s => urlRe.findAllIn(s)).flatten.toList
val fixedUrls = urls.map(s => if (s.startsWith("ttp")) "h" + s else s).distinct
fixedUrls.par.foreach{ url =>
def recur(n: Int): Unit = {
val ext = FilenameUtils.getExtension(url)
val file = new File(imgDir, url.replaceAll("[^a-zA-Z0-9]","") + "." + ext)
try {
if (!file.exists()) FileUtils.copyURLToFile(new URL(url), file)
} catch {
case e: FileNotFoundException =>
case e: IOException =>
if (n < 3) {
Thread.sleep(3000)
recur(n + 1)
}
}
}
recur(0)
}
}
0237デフォルトの名無しさん2014/03/30(日) 22:00:29.19ID:6sp9d58I
gistでやれ
0238デフォルトの名無しさん2014/04/25(金) 02:10:23.92ID:gi5f+y0I
「Scala 2.11」リリース、コンパイラの性能強化などが行われる
http://sourceforge.jp/magazine/14/04/22/143000


あれ?
スレ間違えたかな?
新しいバージョン出たのに、一ヶ月以上投稿されていないぞ。
0239デフォルトの名無しさん2014/04/25(金) 12:04:32.34ID:gb+da3V7
なんかscalaの人がD社に集まってる?
0240デフォルトの名無しさん2014/04/25(金) 12:11:08.60ID:vpRHTENH
女子マネ弁当うらやましす
0241デフォルトの名無しさん2014/04/25(金) 13:43:40.85ID:xYpIBQ/t
女子マネ弁当のせいで逆に朝行かない人もいるし、あれはほんとクソ
0242デフォルトの名無しさん2014/04/25(金) 19:28:32.60ID:jPmvuOB6
上鳥取弁当
0243デフォルトの名無しさん2014/04/26(土) 10:58:21.58ID:KWFffi1l
ドワンゴってキーワード出しただけで、もうScalaと違う話になってる、、、。

でも、ドワンゴがScalaを本格採用したら、この状況も変わるかもね。
逆に、TwitterがScalaを捨てたら、Scalaは本当にオワコン。
0244デフォルトの名無しさん2014/04/26(土) 12:18:26.98ID:xctJXi+r
ドワは大嫌い
0245デフォルトの名無しさん2014/04/26(土) 14:36:26.65ID:hLRLrFim
派手に大爆死するか静かに息を引き取るかの違いでしか無いな
とっくにオワコン
0246デフォルトの名無しさん2014/04/26(土) 15:17:49.23ID:rVQYbF8V
はいはい
0247461 ◆Of8OpFdQADOA 2014/04/29(火) 04:54:14.07ID:yHrjP2Pq
Spray.ioの話題はここでいいですか?
P2P掲示板を作ってるスレから来たものです。
実装につまづいている部分があってそれを相談しに来ました。
ドキュメントや例が少なくて苦心しています。
もし他に適当なスレがあったら誘導お願いいたします。
0248デフォルトの名無しさん2014/04/29(火) 11:24:25.48ID:vcN4iS4p
ここでいいよ
0249デフォルトの名無しさん2014/04/29(火) 14:07:55.92ID:fqLJb+0P
https://groups.google.com/forum/#!forum/spray-user
一日に10件近く新規投稿あったりするんだな。スゲー
0250デフォルトの名無しさん2014/04/29(火) 14:39:40.80ID:eBu7xOA+
せっかくだから、Spray.ioがPlayよりどのへんで優れてるのか、実感を語ってくれ。
0251デフォルトの名無しさん2014/04/29(火) 16:49:53.41ID:pvgpWpOe
>>244
奇遇ですね
私も嫌いです
0252デフォルトの名無しさん2014/04/29(火) 19:23:09.80ID:fqLJb+0P
Play2かSprayに移るって話出てくるのは、WebAPIぐらいじゃないかな。
Sprayって非同期RPCとかのレイヤーなんじゃなかったっけ?

最近は、Finagleの上にというのもあるみたいだけど。
https://github.com/twitter/finatra
0253461 ◆Of8OpFdQADOA 2014/04/30(水) 00:32:53.40ID:m2hxDZhX
ありがとうございます。ではここでお話させていただきます。
spray-clientとspray-canで、ケースクラスをJSONに自動で変換して送受信しようという計画です。
具体的なJson-supportの使い方が分からずに途方に暮れています。
試しに書いてみたコードでは、MarshallerとUnmarshallerが足りないなどのコンパイルエラーが出ます。
手動でStringを送受信してその都度JSON<->ケースクラスで変換するほうが良いのでしょうか?

参考
http://spray.io/documentation/1.2.1/spray-httpx/spray-json-support/
0254デフォルトの名無しさん2014/04/30(水) 03:56:56.99ID:TLgfnSfz
試しに書いてみたコード
とscalaとsprayのバージョンはいくつなのか見せて
0255461 ◆Of8OpFdQADOA 2014/04/30(水) 20:07:03.12ID:m2hxDZhX
遅くなりました。
今現在なんとか動かせるようになったので、質問は取り消すことにします。
またその方法やコードについてはブログなどに纏めて後で公開したいと思います。
お騒がせしました。
0256デフォルトの名無しさん2014/05/05(月) 03:35:07.02ID:3Ni5KvUG
半年ぶりくらいに scala をやろうと思って
sbt とか giter8 とか落としなおしてたんだけど、
Typesafe が 便利なものだしてたんだな。
今はコレが主流なん?
0257デフォルトの名無しさん2014/05/05(月) 03:48:44.44ID:fiA0HUlx
sbtが標準のプロジェクト管理ツールになってるとおもう。intellij ideaとかでも、プロジェクトが認識される。
giter8はプロジェクトのテンプレート展開するツールだけど、イマイチ浸透してないような?
チュートリアルに書いてあるプロジェクトはどれぐらいあるかな?
0258デフォルトの名無しさん2014/05/05(月) 16:16:19.70ID:wgCLsPWH
スカラ祭り、今年はやるらしいな。
http://scalamatsuri.org/
0259デフォルトの名無しさん2014/05/05(月) 16:32:30.27ID:wgCLsPWH
>>258
面接官 「Pythonの倒し方、知らないでしょ? オレらはもう知ってますよ」
0260デフォルトの名無しさん2014/05/05(月) 17:37:52.21ID:GqplFE2u
>>258
英語話せなくても何とかなるなら行きたいです
0261デフォルトの名無しさん2014/05/06(火) 17:13:35.77ID:8r5Ba8c0
scala> 10000000000.0.toInt
res0: Int = 2147483647

例外出さないとかありえないんだが?
俺のGWを返してほしいんだが?
0262デフォルトの名無しさん2014/05/06(火) 18:29:39.49ID:d9R3RQy1
Double#toIntは単にintにキャストするだけみたいだな
(10000000000.0).asInstanceOf[Int]と同じ
0263デフォルトの名無しさん2014/05/06(火) 19:07:39.05ID:r9HN0+TW
そういや、思い出したけど、
String#toIntは、Option[Int]を返すバージョンも作るべきだと思う。
Liftでは用意してたぞ。asInt

これ、実装はStringLikeかな。
0264デフォルトの名無しさん2014/05/06(火) 19:15:51.70ID:d9R3RQy1
https://github.com/scala/scala/blob/master/src/library/scala/collection/immutable/StringLike.scala#L241
Integer.parseInt呼んでるだけだな
まあこっちは例外出すしTry("10000000000.0".toInt).toOptionでいいんでないかね
0265デフォルトの名無しさん2014/05/15(木) 01:48:08.06ID:6KypUwmR
Scalaの入門書はどれがオススメですかね?
0266デフォルトの名無しさん2014/05/15(木) 01:53:13.81ID:yJ+NDsnO
というか、日本語の本って2冊しかなくね?
0267デフォルトの名無しさん2014/05/15(木) 02:10:46.39ID:EhgFi1pN
>>266
んなこたない
http://jp.scala-users.org/books.html

入門者におすすめできる本ってもしかしてないのでは……
初期に出た入門書っぽいのは対応しててもせいぜい2.8で2.7メインだったりするし
コップ本は「ちょっとscalaやってみるわw」って人に勧めるにはヘビーすぎる感じ
0268デフォルトの名無しさん2014/05/16(金) 00:21:02.28ID:rkwNW8iO
コップ本の前に大学講義用の簡潔な資料の多い*MLで肩慣らしするとか
0269デフォルトの名無しさん2014/05/16(金) 04:41:23.64ID:tC3uNMQ9
少し古いけど「Scala逆引きレシピ」で肩慣らししてから
コップ本かな
0270デフォルトの名無しさん2014/05/16(金) 09:16:29.76ID:X7ZngJ90
コレクションクラスの全容と使い分けを書いた本って有るの?
0271デフォルトの名無しさん2014/05/16(金) 10:55:14.11ID:rkwNW8iO
ここら辺とAPIドキュメントでいいような。
全部書いてあるかは、分からないけど。
http://docs.scala-lang.org/ja/overviews/collections/overview.html
0272デフォルトの名無しさん2014/05/19(月) 17:18:33.86ID:RGM3YAZ3
List(Some(1), Some(2)) => Some(List(1, 2))
こういう変換してくれる関数はありますか?
0273デフォルトの名無しさん2014/05/19(月) 18:18:05.85ID:EBM13Ejd
>>272
Scalazのsequenceかな?
0274デフォルトの名無しさん2014/05/19(月) 19:26:21.31ID:1Vquo/IO
>>272
flattenでよいんじゃないかな
0275デフォルトの名無しさん2014/05/22(木) 02:16:24.36ID:kNyzitze
3日間使っただけだけど、Slickってダメなライブラリじゃね?
すぐハマるんだけど。
コード例に載ってる奴だけで済むならいいんだろうけど。
0276デフォルトの名無しさん2014/05/22(木) 07:41:41.24ID:ECkRJuZ0
それはOSSのほとんどに言えること
0277デフォルトの名無しさん2014/05/22(木) 15:17:30.88ID:j+3vqhqP
ベンダーが提供するものだけ使えばいいよ
0278デフォルトの名無しさん2014/05/22(木) 23:07:11.09ID:/0gQcYjf
そんな時はScalikeJDBC

でもscalaベンダ提供のライブラリっていったら
つ http://slick.typesafe.com
0279デフォルトの名無しさん2014/05/23(金) 00:48:03.04ID:BtDc2LWD
最近、Typesafe社を信用しすぎないようにしようと思った。
0280デフォルトの名無しさん2014/05/23(金) 19:28:21.40ID:WVZoxCv3
https://github.com/hjast/geodude/blob/master/src/main/scala/geodude/googlemaps/GoogleMapsGeocoding.scala
0281デフォルトの名無しさん2014/05/25(日) 23:30:45.42ID:Kqg55CS/
>>272
List(Some(1), None, Some(2)) => List(1, 2)
でいいんならflatten
0282デフォルトの名無しさん2014/05/28(水) 00:29:39.91ID:v0COvUG2
sbt 0.13.5 リリース
https://github.com/sbt/sbt/releases/tag/v0.13.5
0283デフォルトの名無しさん2014/06/04(水) 22:21:07.21ID:UyIsHdSg
アップルがパクリ言語Swiftを出したな。
すべて持ってかれてオワコン言語になるか
相乗効果で有名になるかどうやら
0284デフォルトの名無しさん2014/06/04(水) 22:40:14.96ID:oN6V+kTo
Scalaはサーバー専用言語であっちはApple端末専用言語だろ
何をどう持っていくのか
0285デフォルトの名無しさん2014/06/04(水) 23:16:40.05ID:ZW3U0roy
Windowsでも使えて、Scalaとjavaの関係と同じくらいの簡単さで、ObjectiveCを使えるなら乗り換えたい
0286デフォルトの名無しさん2014/06/05(木) 00:31:53.51ID:sFfzPzAE
パクリってどの辺が?
0287デフォルトの名無しさん2014/06/05(木) 00:41:03.07ID:/T91KtMA
GoやMLよりもAOTなscalaって感じはする。
0288デフォルトの名無しさん2014/06/05(木) 00:46:19.88ID:/T91KtMA
違うな。
AOT環境でscalaの変わりとして選ぶならどれ?って聞かれたらという感じかな。
0289デフォルトの名無しさん2014/06/05(木) 23:15:56.62ID:ZqenSHM0
仕事はSwiftの方が多そうだよね
大事な事です、残念だけど。
0290デフォルトの名無しさん2014/06/05(木) 23:20:10.08ID:OExbqmqh
SwiftはWindowsでも使えるのでしょうか?
0291デフォルトの名無しさん2014/06/05(木) 23:59:50.79ID:KZps3rc8
言語だけなら誰かがすぐにコンパイラ作るだろうけど
互換APIはAppleに訴えられるだろうね
0292デフォルトの名無しさん2014/06/14(土) 22:22:14.84ID:+wPvk2Xf
opt.map(_.value).getOrElse(デフォルト) //optはOption型
みたいなコードをIDEAで書くと
「Simplifiable operation on collection」という警告が出て
existsを使え、みたいな事を言われるんですが
どういう意味なんでしょうか?
0293デフォルトの名無しさん2014/06/15(日) 00:23:28.69ID:PFhEfnYG
ScalaのAOTだいぶ強化されてるぞ
日本語情報ぜんぜん無いが
0294デフォルトの名無しさん2014/06/15(日) 03:23:02.16ID:C08jxBHd
>>292
動作は同じでもっとシンプルかつ分かりやすく効率的な書き方あるから大人しくこっち使えよオラって意味だよ
たぶん君の場合はmapとgetOrElse(false)の組を使ってるせいでexists使えって言われてるんだと思うよ

IDEAのSetting -> Inspections -> Scala: General -> Simplifiable operation on collection
でどんなコードが警告出されてどう変換されるか確認できるから見ればいいよ
0295デフォルトの名無しさん2014/06/15(日) 06:02:36.52ID:HmoyO5I3
???の意味が知りたいんだけど、何でググれば出てくる?
0296デフォルトの名無しさん2014/06/15(日) 06:18:19.64ID:0Xbi4t4E
http://twilog.org/kmizu/search?word=%3F%3F%3F&;ao=a
0297デフォルトの名無しさん2014/06/15(日) 13:42:22.46ID:iTUQluLb
Akka IOのサンプルコードが足りなすぎてどう書いて良いのかわからない。
TCP通信をさせたいのだけれど。
役に立つ書籍とかご存知ないですか?
0298デフォルトの名無しさん2014/06/19(木) 22:35:20.11ID:KRuS/Nkr
Rubyで以下の様なシナリオ生成用の
ツール作っていたのですがわけあって
Scalaでも同じものを作ってみたいのですが
類似するサンプルがどうしてもみつからないのですが
どうやって作ればいいか助言をいただけないでしょうか?

Title {
Description "TEST"

scenario {
name "scene1"
data 1
}
scenario {
name "scene2"
data 1
}
}
0299デフォルトの名無しさん2014/06/19(木) 23:17:45.87ID:2pIWoYhf
>>297
akkaは公式ドキュメントが充実してるじゃん
http://doc.akka.io/docs/akka/snapshot/scala/io-tcp.html
akkaの本は洋書だと結構あるけど和書はまだ1つも出てないな
>>298
「scala パーサコンビネータ」でググったらいっぱいでてくるよ
0300デフォルトの名無しさん2014/06/19(木) 23:30:10.92ID:KRuS/Nkr
>>299
書き忘れたんですけど内部DSLの例で括弧使った例って
よくわからないのだけど
0301デフォルトの名無しさん2014/06/20(金) 00:43:28.34ID:1cTFM3kL
DSLって部分を読み落としたんだろ
0302デフォルトの名無しさん2014/06/20(金) 01:18:50.96ID:fiYVjyLm
>>304
外部DSLを知らないってことですね
0303デフォルトの名無しさん2014/06/20(金) 11:50:05.10ID:aFVmrh+o
>>304
0304デフォルトの名無しさん2014/06/20(金) 12:57:20.72ID:+KfxKSN3
RT >304
0305デフォルトの名無しさん2014/06/30(月) 23:35:39.25ID:/VX5kW5x
REPLで複数行書きたい時はどうすればいいんですか?
0306デフォルトの名無しさん2014/06/30(月) 23:45:51.71ID:ZuJKedxl
:paste
0307デフォルトの名無しさん2014/06/30(月) 23:50:01.16ID:wg1FsARY
Scala 2.12 ロードマップ
http://www.scala-lang.org/news/2.12-roadmap
0308デフォルトの名無しさん2014/07/01(火) 00:56:30.83ID:AScZaUEE
SparkやるからしかなてくScalaやってる
0309デフォルトの名無しさん2014/07/05(土) 08:21:34.99ID:hui6Zpi5
>>296
ありがとう!!!
0310デフォルトの名無しさん2014/07/06(日) 14:29:54.31ID:PhqEnIg/
soundcloud、scala開発者増えてるのか。
https://www.eventbrite.com/e/soundcloud-techtalks-unconventional-thinking-in-design-and-programming-tickets-12166429117
http://philcalcado.com/2014/05/03/any_colour_will_do.html
0311デフォルトの名無しさん2014/07/06(日) 16:47:37.80ID:XWehaxkr
違った、今回メインスピーカーをEPFLから呼んで発表してもらうのか。
0312デフォルトの名無しさん2014/07/22(火) 01:23:00.17ID:8fKoNhp+
scalazでHaskellのreturnに相当するのはpointだというところまでは分かったのですが、
failに相当するものも用意されているのでしょうか?
名前かURL等だけでも教えていただけると助かりますm(_ _)m
0313デフォルトの名無しさん2014/07/24(木) 22:37:00.06ID:8wjKk8WJ
Scala 2.11.2 リリース
http://www.scala-lang.org/news/2.11.2
0314デフォルトの名無しさん2014/07/26(土) 22:36:05.28ID:akzyvIVX
Scala、今月の日経ソフトウェアで、また紹介されていたな。
日経ソフトウェアでは、何度も何度もScala紹介特集記事が組まれるけど、毎回、紹介どまり。
使われているんか?これ?
0315デフォルトの名無しさん2014/07/26(土) 22:43:42.69ID:QpStjJL+
意思決定の本買ったら付録で簡単な計算ソフトが付いてたけど、それがscalaで作ってあった
0316デフォルトの名無しさん2014/07/26(土) 23:26:57.61ID:omqjkMZj
>>315
あまり詳しくないんだけど、scalaで作られてるかどうかって分かるの?
0317デフォルトの名無しさん2014/07/26(土) 23:37:44.22ID:QpStjJL+
>>316
ライセンスのフォルダにscalaのが入ってた
0318デフォルトの名無しさん2014/07/26(土) 23:52:27.18ID:omqjkMZj
>>317
そうだったのか、ありがとう。
ちょっとマニアックな著者だね
0319デフォルトの名無しさん2014/07/27(日) 23:02:51.06ID:zvGXOn3J
>>314
使われてないし今後もあり得ないから安心していいよ
0320デフォルトの名無しさん2014/07/27(日) 23:13:21.50ID:kfoRg0UT
さわりは素晴らしい言語に見えるんだけどね
カオスな暗黒面に足を踏み入れると、こんなものがJavaに取って代わって
広く使われたりしたら悪夢だとわかるよな
0321デフォルトの名無しさん2014/07/29(火) 18:20:45.23ID:2/t5IWNy
例えば以下のようなメソッドを
> def foo[A](implicit x: Ordered[A]) = /* (略) */

以下のように書けることは分かったのですが、
> def foo[A: Ordered] = /* (略) */

以下のように型引数が型引数を取る場合は、上記のような書き方 (context bound?) は
できないのでしょうか?
> def hoge[M[_]:Monad, A](implicit x: TypeClass[M[A]]): M[A] = /* (略) */
0322デフォルトの名無しさん2014/07/31(木) 00:33:16.16ID:K5ixd5cr
>>320
暗黒面って例えばどんなところ?
0323デフォルトの名無しさん2014/07/31(木) 00:47:31.66ID:WhIuVQf3
thoughtworksは、jsみたいにgood partsを採用しろっていってるね。
http://www.slideshare.net/mobile/benewu/scala-the-good-and-bad-parts
http://www.infoq.com/presentations/scala-options-immutability-collections
0324デフォルトの名無しさん2014/07/31(木) 07:20:16.44ID:cjUptmKw
>>322
たとえば例外処理に何通りのやり方がある?
その中で今どれを使うべきか理由付きではっきり言える?
2,3年後もそのやり方がベストだと言える?
0325デフォルトの名無しさん2014/07/31(木) 11:00:24.01ID:TyXWzrY4
>>324
むしろ、構文側できちっと用意してないので、何種類でもやり方があるのが問題なのではなかろうか

そもそもjavaのtry-catchスタイルの例外処理自体が失敗だったと言う説も…
0326デフォルトの名無しさん2014/07/31(木) 20:09:46.22ID:V5ufa/CK
何かをしたいとき、選択肢が多すぎる
ベストプラクティスが無いか変わるのが早過ぎる
0327デフォルトの名無しさん2014/07/31(木) 21:44:57.14ID:TyXWzrY4
用途の半分以上がスクリプト言語のscalaにベストプラクティスを求めるのも酷な気がする
0328デフォルトの名無しさん2014/07/31(木) 23:13:00.62ID:hAgm6RGa
>>325

その説ってWebだとどこで読める?


>>327

> 用途の半分以上がスクリプト言語

スクリプト「言語」じゃなくて、スクリプトとしてScalaが使われているってだけだよね。
用途の半分以上ってどこかにソースある?
個人的には、そういう実行方法はおまけ程度の話だと思っていて、
用途の半分以上ってにわかには信じがたい。
0329デフォルトの名無しさん2014/07/31(木) 23:18:40.44ID:hAgm6RGa
>>327

ちなみに、正真正銘スクリプト言語の Perl も Ruby も
O'Reilly からベストプラクティスについて書かれた本が出てるよ。
0330デフォルトの名無しさん2014/08/01(金) 00:03:53.51ID:NVVZFtzI
>>328
半分以上どころか、scalaの用途のほとんどすべてが「スクリプト言語として」だと思う根拠は、どのみち顧客に触らせるアプリケーションの実装はjavaかCだから
0331デフォルトの名無しさん2014/08/01(金) 00:09:48.45ID:NVVZFtzI
>>329
PerlやRubyについては、ベストプラクティスは自明じゃないからこそ本にしたり議論を紛糾させてるのではなかろうか
0332デフォルトの名無しさん2014/08/01(金) 02:41:20.58ID:VlaOK2Ua
>>330
その根拠からだと、顧客に触らせるアプリケーションの実装はjavaかCで、
scalaは使われないっていうだけの結論だよね。

>>331
俺が言いたいのは「スクリプト言語だから」みたいな話は変だよねっていうこと。

仮に議論が
「Scala は開発者の日々のタスクを自動化するような比較的小さな規模のアプリケーションでしか使われない」
みたいなというところから始まっていればまだ少しはわかる気がするんだけど。

ところで「スクリプト言語」ではない言語だと、ベストプラクティスは自明になったり、
ベストプラクティス本が無かったり、議論が紛糾しなかったりするの?
0333デフォルトの名無しさん2014/08/01(金) 15:26:10.17ID:vm60yDAy
http://qiita.com/yimajo/items/a3fac0026c07ec538fc2

記法に一定のモラルを持たすこと。

漠然とした表現だけれども自分の中ではそう認識している。
ただこれはあのひとらの流儀に則るならどうか
でも別のグループのひとらは別の規約をお持ちのようだから
あちら流に合わせるとどうかと、

強いて言うならその場の勢いで盛り上がったまではよかった。

しかし道場破りが状態化してそうな格闘技のジャンルみたいに
なっていくんでないかという懸念(実質フリーダムに分派していくことも多し)

バックグラウンドが同じではないなら、なおさらバラバラに
なり易い。少人数でローカルで規約作って書き上げれるためにはある程度の錬度は必要だと思う。
0334デフォルトの名無しさん2014/08/01(金) 23:38:07.54ID:NVVZFtzI
>>332
scalaが使われないのは、「顧客に触らせるアプリケーションの実装」ではなく、他人のレビューに耐えうるコードの公開

「Scala は開発者個人の日々の仕様書が存在すないタスクを自動化するような比較的小さな規模のアプリケーションでしか使われない」

スクリプト言語ではない言語だとベストプラクティスが自明になる(ならざるをえないレベルに強制的に徹底教育される)理由は、他人とのコミュニケーションを必須とするチーム開発をするから
0335デフォルトの名無しさん2014/08/02(土) 00:22:53.10ID:8ls/zwO2
それSlerの話しでしょ
自社でWebサービスやってるような会社ではScala使ってたりする
0336デフォルトの名無しさん2014/08/02(土) 00:53:04.26ID:UBZX0AEK
Twitter では Scala がインフラ開発で広く活用されているのは
Scala使いなら常識だと思っていたんだけど、
どこから >>334 みたいな珍説が生まれたんだろう?
0337デフォルトの名無しさん2014/08/02(土) 07:48:39.99ID:fNoV+ZBu
マルチパラダイムというほどのことではなく、実際には以前の設計がちょっと気に入らないために
似たようなものが再発明されて放置されてるゴミが多いんだよな
一番問題なのはマルチパラダイムという言葉に甘えた無節操・無計画な開発方針だよ
0338デフォルトの名無しさん2014/08/02(土) 08:55:10.64ID:mREeLnvF
一般の業務システム程度の要求に対してScalaはオーバースペックだし難しすぎる
これだけでSIerが採用しない理由としては十分

普及ってのがSIerを対象にしていないのなら別に気にしなくていいんだろうけど
0339デフォルトの名無しさん2014/08/02(土) 14:56:09.02ID:kNRdpdrF
どこが難しくてオーバースペックなのかわからない

何と比較してるのかわからないが
JavaやPHPなんかよりすっきりするし、
変数の扱い等も楽だと思うのだけど
0340デフォルトの名無しさん2014/08/02(土) 15:25:23.82ID:1euMp4Dx
>>339
プログラムを簡潔に記述できる!=プログラムを覚えやすい、ではないでしょ
簡潔に表現するための抽象的で自由度の高い機能は、知らない人にとっては複雑に感じるよ。

JavaやPHPは旧来の言語(CやC++)を知っていれば何と無くかけるし、世の中に情報が溢れているからね。
Scalaは関数型言語としては、その点を重視して旧来の考え方を取り込んでいるから実用性が高いけど、まだ世間が追いついていない。
0341デフォルトの名無しさん2014/08/02(土) 15:35:09.23ID:kNRdpdrF
>>340
簡潔に書けることよりvalがあるのが大きい
まだ追いつかないのは仕方ないとは思うけどね
0342デフォルトの名無しさん2014/08/02(土) 15:56:57.86ID:537qFnzj
メンバーが全員関数型言語に理解があるなら迷わずScala使うけど、
そんなチームがどれだけあるのやら
スクリプト的な用途だと最後まで1人で作ることがほとんどだから
気軽に採用できるけどね
0343デフォルトの名無しさん2014/08/02(土) 16:16:03.26ID:HM7CQAr9
Scalaを使う層は、関数型的な使い方なんてしてないだろ
c++とhaskell以外はプログラマなんて名乗ったり、語らなくていいよ
0344デフォルトの名無しさん2014/08/02(土) 16:25:32.10ID:1euMp4Dx
>>342
会社(集団)としてScalaを推し進めて行けば、普及は可能だと思うけど。
もちろん、派遣メインのSIerじゃ無理だから、自社サービスやってるところに限られるけど。
最近だと、ドワンゴがPHP→Scalaを推し進めているみたいね。
0345デフォルトの名無しさん2014/08/02(土) 16:26:41.36ID:8ls/zwO2
D, Go, RustがあるからC++はもういらないけどな
0346デフォルトの名無しさん2014/08/02(土) 16:28:25.91ID:0zt4dTHD
関数言語として使い方が分からないときでも、自力でなんとかプログラムできないと困るしな…
0347デフォルトの名無しさん2014/08/02(土) 16:30:08.10ID:UBZX0AEK
>>342
関数型言語というのが純粋で遅延評価な Haskell であれば、
システム開発への適用は無茶だという意見に自分も同意する

でも JavaScript や Ruby といったスクリプト言語では、
関数型プログラミングというスタイルは
すでに常識となっている(Java でもラムダ式構文が追加された)
だから数年前とは違って、ML族(SML/OCaml/F#)や Scala のような
「ふつうの関数型言語」であれば、システム開発に採用するハードルは
十分に低くなっていると思う
0348デフォルトの名無しさん2014/08/02(土) 16:32:36.03ID:zMi2Xe+5
うちは受託開発で普通にScala使ってるけど。
客に「Scalaって何ですか?」って聞かれたら、「Javaに毛が生えたようなもんですよ」って
言っとけば、だいたい何となく納得してくれる。
0349デフォルトの名無しさん2014/08/02(土) 16:36:27.17ID:0zt4dTHD
>>347
基本情報処理技術者試験に具体的なコードの問題が存在しない関数型プログラミングというスタイルを常識と呼ぶのはいかがなものか
0350デフォルトの名無しさん2014/08/02(土) 16:38:55.57ID:0zt4dTHD
>>348
拡張部分を他者にJavaで作らせて結合できなくて「Javaじゃないの?」とクレーム入れられて死ぬパターンとみた
0351デフォルトの名無しさん2014/08/02(土) 16:40:09.68ID:1euMp4Dx
>>348
おっいいねー。
どのぐらいの規模?直受け?
0352デフォルトの名無しさん2014/08/02(土) 16:49:56.05ID:UBZX0AEK
>>349
基本情報処理技術者試験で出題されるプログラミング言語は、
C、COBOL、Java、アセンブリ言語の4種類しかない

つまり >>349 の住んでいる異次元世界だと、
C++/C#/JavaScript/Python/Ruby/PHP は
非常識なプログラミング言語という扱いなんですねー(棒
0353デフォルトの名無しさん2014/08/02(土) 16:57:55.82ID:0zt4dTHD
>>352
C、COBOL、Java、アセンブリ言語に代表される線形なプログラミング言語による開発は常識ですが、C++/C#/JavaScript/Python/Ruby/PHP をλ抽象を型として抽象化する関数型プログラミング言語は非常識と言う扱いです

用語すら統一されておりません
0354デフォルトの名無しさん2014/08/02(土) 17:05:37.13ID:kNRdpdrF
JavaでScala。
0355デフォルトの名無しさん2014/08/02(土) 17:13:36.10ID:ETyhgdmp
>>340
一番完結なのはアセンブラとか機械語だな
あれこそ高度に抽象化されてる
0356デフォルトの名無しさん2014/08/02(土) 17:16:29.49ID:UBZX0AEK
>>353
そうですか、>>353氏の住んでおられる異次元世界では
C# の LINQ や JavaScript の jQuery は非常識なんですね
しかも C++/C#/JavaScript/Python/Ruby/PHP は
「関数型言語」として扱われているんですね

つまり「手続き型言語」として認められているのは
基本情報処理技術者試験で出題される
C/COBOL/Java/アセンブリ言語だけ

こりゃ異次元世界の住人様と話が合うはずもありませんねー(棒
0357デフォルトの名無しさん2014/08/02(土) 17:17:00.88ID:0zt4dTHD
>>355
いまだに社会インフラのインフラ部分がアセンブラだから、機械語とアセンブラに関しては言語の性質関係なく技術者確保が必須になる
というか、団塊の世代が完全引退したらもうメンテできない

2000年問題どころの騒ぎじゃないんだけど、もうあきらめてるのかな
0358デフォルトの名無しさん2014/08/02(土) 17:23:08.04ID:0zt4dTHD
>>356
どの言語であれ、λ抽象を型として抽象化する関数型プログラミング言語は日本では非常識

学術的にはλ抽象を型として抽象化する言語を「関数型言語」として扱うが、私の住んでいる異次元世界日本では、その「関数型言語」の範囲すら統一されていない

つまり、常識として認められてるのは、C/COBOL/Java/アセンブリ言語を典型例として基本情報処理技術者試験で出題される「手続き型言語」だけ
0359デフォルトの名無しさん2014/08/02(土) 17:27:25.39ID:UBZX0AEK
>>358
私も住んでいるのは日本ですけど、
やはり>>358氏の住んでおられる日本は
同じ日本でも次元の異なる異世界だったのですねー(棒
0360デフォルトの名無しさん2014/08/02(土) 17:35:43.60ID:0zt4dTHD
>>359
例えば、常識の定義を

「社内の技術者の80%の人が同じ意味として理解しており使える」
「これに沿ってプログラミングしていれば作業環境を交換しても今からすぐに相手の作業を継続できる」
「質問したときに即答できないとペナルティを受ける知識」

とするなら、あなたは「関数型プログラミングというスタイルは常識」の世界に住んでいるのでしょうかね?
0361デフォルトの名無しさん2014/08/02(土) 17:42:41.21ID:gLUtqrlx
パラダイムと言語の違いもわからない人が常識とか言ってるの・・・
0362デフォルトの名無しさん2014/08/02(土) 17:46:49.94ID:UBZX0AEK
>>360
そうですね

「社内の技術者の大半(80%?)にとってCOBOLやアセンブリ言語は常識ではない」し、
「COBOLやアセンブリ言語で書かれたプログラムを社内の誰もが引き継げるとは考えられない」し、
「COBOLやアセンブリ言語に関する質問に答えられなくてもペナルティを受けることはない」から、

>>360氏の住む異世界日本の常識とは、かなりかけ離れているみたいですねー(棒
0363デフォルトの名無しさん2014/08/02(土) 17:48:40.92ID:0zt4dTHD
>>361
正確には、非常識なのは「関数型プログラミングというスタイル」でしたね

「パラダイム」という単語の意味も80%の人が同値な説明をするのは無理なので、常識とは呼べないでしょう

応用技術者の方にも具体的なコードでの関数型プログラミングというスタイルの出題がないくらいだし
0364デフォルトの名無しさん2014/08/02(土) 17:52:37.49ID:0zt4dTHD
>>362
「社内の技術者の大半(80%?)にとって、COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルが常識ではなく」
「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルで書かれたプログラムを社内の誰もが引き継げるとは考えられなくて」
「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルに関する質問に答えられなくてもペナルティを受ける」

ような世界でも関数型プログラミングのスタイルを理解できるんですね
0365デフォルトの名無しさん2014/08/02(土) 17:54:35.87ID:UBZX0AEK
>>363
関数型プログラミングですら非常識という人が
常識的には関数型言語に分類される Scala のスレで
いったい何をしたいのですかね?

(はたして Scala は関数型言語なのか?という議論はさておき....)
0366デフォルトの名無しさん2014/08/02(土) 18:00:18.12ID:0zt4dTHD
>>365
どんな先進的な科学も、社会の常識になる前にいろいろと議論する人達がいるわけでして…
0367デフォルトの名無しさん2014/08/02(土) 18:09:37.27ID:mREeLnvF
>>341
> valがあるのが大きい

Javaのfinalと同じじゃないの?
0368デフォルトの名無しさん2014/08/02(土) 18:41:05.56ID:UBZX0AEK
>>364
いや、

> 「COBOLやアセンブリ言語を典型例とする手続き型プログラミングのスタイルに関する質問に答えられなくてもペナルティを受ける」

ような世界では、おそらく関数型プログラミングのスタイルを理解するのは難しいんじゃないですかね?

私の住んでいる次元世界の日本では、(>>362で書いたように)
「ペナルティを受けることはない」ので、自分では想像できないですねー(棒
0369デフォルトの名無しさん2014/08/02(土) 18:57:55.40ID:UBZX0AEK
>>366
COBOLやアセンブリ言語が手続き型言語の典型例であるとする
異次元世界の住人との間では、そもそも議論にならないのではないかと思われ...

自分は最初(>>352)からまともに相手してませんよー(棒
0370デフォルトの名無しさん2014/08/02(土) 20:47:19.99ID:qJcWiIKu
久しぶりに伸びてると思ったらこんな話題かよ
0371デフォルトの名無しさん2014/08/02(土) 21:21:09.15ID:kNRdpdrF
>>367
確かにfinalでもいいのかも
0372デフォルトの名無しさん2014/08/02(土) 21:24:50.23ID:mREeLnvF
Scalaだとvalが肯定される一方、Javaでfinalを付けると
「気持ち悪いから止めろ」
「finalを付けたくなるというのは、そもそもお前の書き方が悪い」
って全否定されたでござるの巻
03733422014/08/02(土) 21:56:59.71ID:537qFnzj
なんか変な種撒いたみたいですまん。申し訳ない。
うちは派遣メインなんだわ…やっぱ自社開発したいなあ。頑張ろう
0374デフォルトの名無しさん2014/08/02(土) 22:31:23.70ID:0zt4dTHD
>>368-369
基本情報処理技術者試験でわざわざ具体的なコードを提示して問題を出している手続き型プログラミングのスタイルを知らなくてもペナルティを受けないような人達がscalaの機能について議論するのはいかがなものか?
0375デフォルトの名無しさん2014/08/02(土) 22:44:36.46ID:UBZX0AEK
>>370,373
スルーできなかった自分が悪かった、ゴメソ
0376デフォルトの名無しさん2014/08/02(土) 23:12:04.12ID:fNoV+ZBu
ドメイン駆動よりもむしろドカタの得意技トランザクションスクリプトの方が関数型には合ってるよ
COBOLアプリの設計書なんかそのまま関数型で実装すれば関数型として違和感のないものが出来上がるはず
Scalaみたいな最近流行りの「関数オブジェクト指向」じゃなくてガチな宣言型の方の関数型な
0377デフォルトの名無しさん2014/08/03(日) 00:12:47.91ID:+5GTUuN1
>>337
http://www.reddit.com/r/scala/comments/2cc671/the_10_most_annoying_things_coming_back_to_java/
[–]vytah 3 points 22 hours ago
I can honestly say if someone had shown me the Programming Scala book by
Martin Odersky, Lex Spoon & Bill Venners back in 2003.
I'd probably have never created Groovy.
― James Strachan, creator of Groovy

[–]expatcoder 1 point 21 hours ago
and now author of the Kotlin standard library, ironically enough, guy gets around ;-)

十一年前そう思って作ってやったんだぜ?
がgroovyらしい。

しかしgroovyもscalaも十年前からあるんだ
という事実にちょっとビビってしまう。

Haskel的立ち位置にありそうだけど使いどころは要検討かなと認識
個人的に強い型チェックが馴染まんのでlisp界隈いじりたい今日のこのごろやな…

http://redmonk.com/sogrady/category/programming-languages/
0378デフォルトの名無しさん2014/08/03(日) 00:12:49.39ID:Kg8uVIVR
>>376
君この記事読みなよ
http://zerobase.hateblo.jp/entry/2013/02/21/171750

SIerが作ってるプログラムだって、抽象度が高い箇所はある(主に画面、画面が持つ機能。Controller,Service,Logic,DAO,Entity)
それらまで関数型だけで実現するコストは如何なもの?
0379デフォルトの名無しさん2014/08/03(日) 00:38:05.54ID:+5GTUuN1
Spring Framework 4プログラミング入門 [単行本]
http://www.amazon.co.jp//dp/4798041564
掌田 津耶乃

http://www.amazon.co.jp/掌田-津耶乃/e/B004L5AED8/

なぜに今spring framework4なのか...
0380デフォルトの名無しさん2014/08/03(日) 00:44:41.22ID:hQ3yR5lB
禿本を読んだのも もう10年前の話だな 懐かしい
0381デフォルトの名無しさん2014/08/03(日) 01:04:42.68ID:XCZJfuBH
>>378
リンク先の記事の技術レベルは「アルゴリズム宣言」と同じだね
少なくともシステム開発には直接関連しない話題だ

また抽象度が高いからこそ、オブジェクト指向よりも抽象化の粒度が小さく
形式的である(Scala を含む)関数型パラダイムが適していると思う
0382デフォルトの名無しさん2014/08/03(日) 01:30:26.57ID:Kg8uVIVR
>>381
>>>378
>リンク先の記事の技術レベルは「アルゴリズム宣言」と同じだね
>少なくともシステム開発には直接関連しない話題だ
意味不明。説明願おう

>また抽象度が高いからこそ、オブジェクト指向よりも抽象化の粒度が小さく
>形式的である(Scala を含む)関数型パラダイムが適していると思う
言葉足らずだったが、抽象化の粒度が大きいもの(実世界に存在するもの)はどうするんだ?
0383デフォルトの名無しさん2014/08/04(月) 16:29:42.31ID:8cMXTNzM
とはいえ現実には世の中だいたいトランザクションスクリプトでうまく回ってわけだしな
粗粒度の抽象化をしないことによる生産性や保守性低下の弊害は宣言型により極めて劇的に改善できる
関数型普及の切り札はやっぱりトランザクションスクリプトとの相性の良さでしょ
0384デフォルトの名無しさん2014/08/04(月) 18:05:17.58ID:SEnw8P0k
> 極めて劇的に

そりゃまた大きく出たもんだな
0385デフォルトの名無しさん2014/08/04(月) 18:44:57.55ID:hGuEjdDh
>>383
お前さあ、言いたいことだけ言ってて、全く根拠が無いんだが?
ちったあ、考えてもの家
0386デフォルトの名無しさん2014/08/04(月) 19:39:37.20ID:8cMXTNzM
誰かのブログ記事貼ればよかったの?w
0387デフォルトの名無しさん2014/08/04(月) 20:37:43.19ID:CJ83fxk4
>>382
関数型言語プログラマまたは関数型プログラミングをしている人であれば、
誰でもオブジェクトの不変性が重要である事は理解しているはず(しかもココは Scala スレ)

>>378 の記事は、著者がこうした関数型への壁を一つ乗り越えた感動を表現した感想文である
もちろんブログとは日々の心を綴る日記なのだから、>>378 の記事そのものに何ら問題はない

ただし、わざわざこの記事を引用し、それを読めと命ずる >>378 の意図がサッパリわからないという話
繰り返すけど、ここは関数型言語である Scala のスレだよ(他の雑談スレへ逝ったほうがいいと思うな)
0388デフォルトの名無しさん2014/08/04(月) 22:36:25.14ID:DoTGORwJ
オブジェクトの不変性が大事だと言いつつ、実務ではmutableコレクションを使いまくってる感じだな…
0389デフォルトの名無しさん2014/08/04(月) 23:45:38.02ID:u+J9LOc+
>>387
Scalaは関数型でありOOPでもある。両者は共存できる。オブジェクトの不変性よりこれを伝えたかった。
どうやら彼は関数型とOOPは水と油みたいに考えているようなので、そのことについての当てつけ。

何にしろ、本題のトランザクションスクリプトに関数型が合っているというのは理解できないけど。
0390デフォルトの名無しさん2014/08/04(月) 23:50:57.71ID:X7ytY+se
みなさんエラー処理はどうしてます?
0391デフォルトの名無しさん2014/08/05(火) 00:13:33.14ID:IMXi2FpS
scalaが関数型というより、scalaは関数型を持ってると言った方が正確ではなかろうか
0392デフォルトの名無しさん2014/08/05(火) 01:36:25.40ID:jeY7qdd3
最近忘れてたが、純粋なオブジェクト指向だけど、速さも両立してるというのは独特だったね。
0393デフォルトの名無しさん2014/08/05(火) 01:41:37.56ID:jeY7qdd3
>>390
Ether使った上で個別のエラーを取りたいときどうするかが、話題になってたね。
0394デフォルトの名無しさん2014/08/05(火) 07:27:03.67ID:ghCtuQ0N
>>391
同意
宣言型じゃないんだからデリゲート指向とでも呼ぶべきもの
0395デフォルトの名無しさん2014/08/05(火) 08:12:20.31ID:IpAz30+6
>>394
>>391はhas-aって言ってるけど、お前はis-not-aじゃねーか。なーにが同意だ
そもそもデリゲート指向ってなんだよ。お前Scalaのこと何も分かってねえだろ
03963942014/08/05(火) 08:16:04.90ID:ghCtuQ0N
関数オブジェクトを持ってるという意味な
>>391がそういう意味なのか関数型言語を包含してるという意味なのかは知らないけど
0397デフォルトの名無しさん2014/08/05(火) 23:27:29.77ID:nq9s5bEX
なんでtrueやfalaseってTrueやFalseじゃないんですか?
0398デフォルトの名無しさん2014/08/06(水) 02:35:05.64ID:ZQqZwKiZ
>>390
Eitherとscala.util.Tryで大半を扱ってる
try-catchを使わない理由はtail callを壊してくれるから
0399デフォルトの名無しさん2014/08/06(水) 08:42:10.11ID:AGBFAu/N
この手の言語で関数型というとき、第一級関数だけに目が行ってて宣言的プログラミングを軽視する奴が多いのは確か
0400デフォルトの名無しさん2014/08/06(水) 09:46:03.05ID:gMehfwaL
Haskell作者のインタビュー本には、今時、どの言語でも関数オブジェクト扱えるんだから、
関数型言語とはと聞かれたら、immutableのサポートと副作用の制御あたりを挙げるべき
てな話が載ってたはず。
0401デフォルトの名無しさん2014/08/06(水) 18:22:22.18ID:GvRv1e44
>>399
逆に宣言型マンセーでマルチパラダイムの関数型言語軽視するやつが多くも感じる。
結局の所、自分の認めたこと以外認めない奴の声が大きいだけなんだよ。
0402デフォルトの名無しさん2014/08/06(水) 19:12:40.42ID:AGBFAu/N
まあそれはそうだが、filterやmapの後にforeachしてこれが関数型だと言われてしまうと、
さすがに抵抗を感じる奴は多いんじゃないだろうか
マルチパラダイム言語らしいところではあるけど、その点ではストリームのメソッドにforeachを入れずに
副作用は従来のforeach文で分けて書かせることを選択したC#は上手い
0403デフォルトの名無しさん2014/08/06(水) 21:19:52.01ID:cXwK7sUI
Anormシンプルでいいな
Slickみたいな言語内DSL型のORMを使うと破綻する
0404デフォルトの名無しさん2014/08/06(水) 22:15:54.12ID:e5ISbei6
そもそもscalaを選択する理由が、関数型プログラミングをしたいからじゃなくて、既存のプログラミングスタイルの中で関数型を使いたいからだしな…
そこら辺が分かってるからこそmutableなんて変なコレクションを置いているのではなかろうか
0405デフォルトの名無しさん2014/08/06(水) 22:51:58.07ID:WntmyFY5
Scalaだめだろ
アドホックにいろいろくっつけすぎて
大したことできないのにわけわかめなことに
0406デフォルトの名無しさん2014/08/06(水) 22:58:28.77ID:e5ISbei6
とりあえず、Javaでできることは全部できるよ
0407デフォルトの名無しさん2014/08/06(水) 23:11:08.18ID:m3/gfdXx
>>402
固く考えるなよ。>>400ぐらいの解釈でいいんじゃね?
俺はC#がforeachをlinqにないのは不便だと思うし、ネット調べたらそういった感想がいっぱい出てくるぜ?
Ixにはなぜかあるしな。
0408デフォルトの名無しさん2014/08/06(水) 23:14:28.38ID:m3/gfdXx
>>405
むしろ何ができないのか教えてほしいもんだ。
0409デフォルトの名無しさん2014/08/07(木) 08:33:53.34ID:UhGIHveY
>>407
>>400の解釈ならforeachなんかもってのほかだろ
Scalaってイミュータブルにしろ純粋関数使えというのがやたらと強調される割に
途中過程でforeach使うなというのはあまり聞かないよな
まさに副作用の象徴といえる存在なのに
0410デフォルトの名無しさん2014/08/07(木) 12:18:47.77ID:hdemE6Ef
mapとかfilterとかはわかるけど、foreachってイマイチどこで使えばいいのかわからない。
0411デフォルトの名無しさん2014/08/07(木) 18:25:41.06ID:j7LnXvCB
>>409
immutableのサポートであって、強制ではないでしょ。
foreachがないと、ビジネスロジックが処理できなくなるじゃん
0412デフォルトの名無しさん2014/08/07(木) 18:27:24.86ID:j7LnXvCB
>>410
やろうと思えばなんでもできる。ってのがforeachの役割。基本、最終手段に使えばいいんじゃね?
04133942014/08/07(木) 21:11:14.69ID:UhGIHveY
>>411
>foreachがないと、ビジネスロジックが処理できなくなるじゃん
それimmutableだけではビジネスロジックが処理できなくなると言ってるのと同じだよ
foreachはimmutableだけで構成されたコードでは本質的に全く意味を持たないからね
命令型のためのAPIを流用する以上、最終的な出力にはforeachは必須だけどそれ以外には不要だよ
0414デフォルトの名無しさん2014/08/07(木) 21:28:14.98ID:7g/ek2KL
>>413
お前極端に受け取りすぎだよ。
filterやmapした後に、各要素に対してDBアクセスしたい場合、foreachを使わず悩まず処理ができるかって話だ。

本質的に意味を持たない?コレクションに対する必要な処理をした後に、そのままの流れで副作用のある処理をするのならforeachが自然だろ。

それでもimmutableにこだわるのなら、Scalaを使うべきでは無いのでは?
0415デフォルトの名無しさん2014/08/07(木) 22:29:04.69ID:/tp7lvnq
phpはmap処理よりforeachのが速いのか。
0416デフォルトの名無しさん2014/08/07(木) 22:35:29.79ID:kMs4sz3W
Scalaのライブラリコードは、foreachってかwhile文使いまくりだよね。
0417デフォルトの名無しさん2014/08/07(木) 22:35:50.13ID:/tp7lvnq
http://yuroyoro.hatenablog.com/entry/20100317/1268819400
scalaだとこういうこと出来るのか。
0418デフォルトの名無しさん2014/08/07(木) 22:44:01.01ID:/tp7lvnq
http://xin9le.net/articles/90
http://www.slideshare.net/mobile/zoetrope/java8-lambdaandstream
逆にいうと、C#やjavaだと区別がつかないのか。
0419デフォルトの名無しさん2014/08/08(金) 00:59:39.36ID:a3yimXET
Java8が出た今、存在価値なくなったよね
0420デフォルトの名無しさん2014/08/08(金) 02:09:34.29ID:TNc1fB7W
本気でそう思ってるのなら頭ん中お花畑としか思えない
0421デフォルトの名無しさん2014/08/08(金) 12:14:56.39ID:I3/yjOSM
言語仕様なんて一つの要素にすぎないからね
結局、比較的マイナーな言語を使うことによる環境面での諸々のデメリットとJavaのストレスとどっちを取るかだから、
そこのバランスは多少なりとも変わる
0422デフォルトの名無しさん2014/08/08(金) 18:13:09.67ID:lfSHbP83
Javaが重要なのは仕様ではなく、APIと企業の宣伝だしな…
0423デフォルトの名無しさん2014/08/09(土) 00:18:19.17ID:u5v054hr
今月の日経ソフトウェア見たけど
Scalaは今後世界を席巻しそうだね
0424デフォルトの名無しさん2014/08/09(土) 00:51:25.18ID:SbXIDJGW
コンパニオンオブジェクト鬱陶しい
static使わせろ
0425デフォルトの名無しさん2014/08/11(月) 23:02:43.45ID:Fy8byxke
何度か使ってみたが同じ仕様でスタートしても実装の収束性が悪い気がする。
あまりいろいろできすぎるのも考えものだ。
0426デフォルトの名無しさん2014/08/12(火) 00:45:14.16ID:/O5QMX+D
静的型付け界のperl
0427デフォルトの名無しさん2014/08/12(火) 07:40:07.19ID:bJ/x0GjC
>>425
気がするどころかScala最大の欠点としてずっと言われ続けてるが
今も変わらず9割のクソと1割のまともなブツが生み出されてはカオスに仲間入りし続けている
0428デフォルトの名無しさん2014/08/12(火) 10:04:03.75ID:78ufZTe1
まあどうせ主流になることはあり得ないからどうでもいい
0429デフォルトの名無しさん2014/08/12(火) 18:11:21.27ID:AWDNtOwp
>>428
なんであり得ないの?ねえ?ねえ?
なんでwwwwあwりwえwなwいwのwwww!!!???
0430デフォルトの名無しさん2014/08/12(火) 18:20:14.52ID:Uf5VA/xc
>>429
scalaを使うべき理由のNo1は(Javaの)APIが充実しているからだが、そもそもJavaですら使い切れておらず、Javaの存在そのものがセキュリティホールになっているから
0431デフォルトの名無しさん2014/08/13(水) 21:37:13.46ID:vh/ykZOT
Scalaいらないものリスト
・コンパニオンオブジェクト
・newキーワード
・抽象型
・lazy引数
・implicit宣言
・インポート時の_root_
・デフォルトをprivateに
・for文のfilterその他
・自分型アノテーション
etc,etc....
0432デフォルトの名無しさん2014/08/13(水) 22:13:24.68ID:xwn08+4R
>>431
>newキーワード
Javaクラスのインスタンス化。そもそもapplyでnew使うじゃん
>implicit
Javaオブジェクトの変換どうすんの?
0433デフォルトの名無しさん2014/08/14(木) 00:48:07.22ID:q1H0Af2x
>>431
scalaコード一万行ぐらい書いてたが
数えてみたら抽象型とか一回も使ってなかったわ。
implicitはscalikejdbc使うときに必要なぐらい。
その他は好みの違いで済むものにいちゃもんつけてるように見える。
まぁもっとデカいプロジェクト
あるいはフレームワークっぽいの作ろうとしたら
色々使う機会もあるんでしょう。
0434デフォルトの名無しさん2014/08/18(月) 19:44:29.89ID:4VAcRAlT
ゴテゴテ色んな機能が付いてて要らなく感じても邪魔になるようなものは少ないと思う
0435デフォルトの名無しさん2014/08/18(月) 21:26:38.89ID:NjByR6kn
本で紹介されてた機能が便利で簡単そうだと思って使ってみら、半年後の自分にはコードだけでは理解不能

という状態を回避したい
0436デフォルトの名無しさん2014/08/18(月) 22:58:04.56ID:18kJ6Cmw
Scalaって今後有望ですかね
0437デフォルトの名無しさん2014/08/19(火) 00:14:11.31ID:dGN2Xh51
難しいだろうね
何かが足りないのはいくらでも改善できるけど、Scalaの場合はありすぎるのが最大の問題とされているので常に悪化する一方だ
0438デフォルトの名無しさん2014/08/19(火) 06:31:36.04ID:RLzZhY/k
>>437
何が足りないの?挙げてみてよ
フルボッコにしてやるから
0439デフォルトの名無しさん2014/08/19(火) 08:07:25.50ID:KuDDZyzc
シンプルさ?
0440デフォルトの名無しさん2014/08/19(火) 11:39:12.13ID:VxtC/3Yq
わかりやすさ
適度な冗長さ
0441デフォルトの名無しさん2014/08/19(火) 12:45:41.24ID:g7X0G1cO
>>438
ニュータイプ宣言
0442デフォルトの名無しさん2014/08/19(火) 12:51:08.59ID:KntmMyQR
コードの堅牢さ
0443デフォルトの名無しさん2014/08/19(火) 15:54:37.43ID:oAxlpYMb
sbtの複雑さはやばい
あれだけは擁護不可能
0444デフォルトの名無しさん2014/08/19(火) 16:29:11.80ID:ACkzRhgX
s i m p l e b u i l d t o o l
0445デフォルトの名無しさん2014/08/19(火) 16:59:54.75ID:dGN2Xh51
sbtはscalaにポータビリティに難ありというイメージを付けてしまった元凶だよな
0446デフォルトの名無しさん2014/08/19(火) 20:17:14.18ID:KuDDZyzc
誰かS--とか作れ
0447デフォルトの名無しさん2014/08/19(火) 22:53:19.39ID:ACkzRhgX
scalaが複雑すぎだとかなんとか言ってる人はKotlinとかその辺がいいんじゃないっすかね
使ったことないけど
0448デフォルトの名無しさん2014/08/21(木) 12:52:23.48ID:94oPmB25
scalaってocamlのまんまパクリなのに何故もてはやされてるの?
氷水被るステマと同じ?
0449デフォルトの名無しさん2014/08/21(木) 16:59:39.46ID:rdgyoHzk
>>448
JVMとjavaのAPIが使えるから
0450デフォルトの名無しさん2014/08/21(木) 17:02:28.59ID:hozPYr3C
各種C++コンパイラも原典のパクリだが。
もてはやされる。
0451デフォルトの名無しさん2014/08/21(木) 17:11:14.43ID:npCrOf/M
構文の上っ面を眺める作業に戻るんだ
0452デフォルトの名無しさん2014/08/21(木) 19:06:39.44ID:hOocc919
正直、前方参照の問題を除けばOCamlで十分だよね
JVMとの親和性を高めるにしても、F#みたいなのでよかった
0453デフォルトの名無しさん2014/08/21(木) 19:25:36.91ID:rdgyoHzk
>>452
そもそも大学で研究用に作られたモノだから、文句があるなら自分で作れという返答が返ってきそうだな…
0454デフォルトの名無しさん2014/08/21(木) 23:03:09.67ID:V3wFXCwZ
>>448
どっかの受け売り?
0455デフォルトの名無しさん2014/08/21(木) 23:08:50.95ID:V3wFXCwZ
haskellもocamlあまり移植が上手く行ってないんじゃなかったっけ?
http://jaskell.codehaus.org/
http://www.ocamljava.org/

haskellライクなやつはあるけど、これも開発者が少ない段階
https://github.com/Frege/frege
0456デフォルトの名無しさん2014/08/21(木) 23:17:20.01ID:V3wFXCwZ
scalaは関数も含めて全てがオブジェクトという世界。
JVMでほかのML語族使いたいというなら、いまのところはfrageあたりで頑張るしかないんじゃないかな。
0457デフォルトの名無しさん2014/08/21(木) 23:22:15.41ID:8dV6uUfa
ocamlだすとかネタでしょ
0458デフォルトの名無しさん2014/08/22(金) 00:18:33.10ID:o8MxvfV6
scalaとocamlではオブジェクト指向の扱いが大分違うのでは?
F#は知らんけど。
http://d.hatena.ne.jp/camlspotter/touch/20080906/1220723583
0459デフォルトの名無しさん2014/08/22(金) 06:27:15.09ID:c+MP2XXJ
F#はOCamlの不便なところ異質なところをだいぶ改善してる
結果的にかなりScalaに似てる
0460デフォルトの名無しさん2014/08/22(金) 14:12:53.08ID:IpJPA1GG
結局javaのライブラリを呼び出すことになるから
null排除できないよね
0461デフォルトの名無しさん2014/08/22(金) 20:04:59.15ID:612G7yH4
Optionに包めよ
0462デフォルトの名無しさん2014/08/22(金) 20:12:55.37ID:qAmpYI06
マルチスケールって、いろんな抽象度でプログラミングできるってことなのね
0463デフォルトの名無しさん2014/08/22(金) 20:56:15.85ID:I7aAUkM3
Optionは多用するには字面が長すぎる
Option[String] が String? みたいに書けたら良かったのに。
0464デフォルトの名無しさん2014/08/24(日) 13:09:37.76ID:1VxSfKmv
A[B,C]をB A Cみたいに中置記法で書けなかったっけ
それで>>463できないの
0465デフォルトの名無しさん2014/08/30(土) 12:02:08.52ID:hcc9935Q
そろそろScalaでFPGAを設計しようぜ。

http://wasa-labo.com/wp/?p=50
Synthesijer.Scalaをはじめました
0466デフォルトの名無しさん2014/08/30(土) 16:08:26.55ID:sqMEbrT8
スカラ祭りどうなったん?
0467デフォルトの名無しさん2014/09/01(月) 04:25:29.58ID:skqaNXzx
冗長でも読みやすいJavaのコードに慣れてると
Scalaは小難しく感じるなぁ・・・
入門サイト見てるけど

【Java】
public List filterNames(List<String> names, int len) {
  List<String> result = new ArrayList();
  for (String name : names) {
    if (name.length() >= len) {
      result.add(name.toUpperCase());
    }
  }
  return result;
}
↓
【Scala】
def filterNames(list: List[String], len: Int) = list.filter(_.length() >= len).map(_.toUpperCase)

例が極端なのかもしれないけど、う・・・うーん・・・・
なれる自信がないお
0468デフォルトの名無しさん2014/09/01(月) 06:11:04.55ID:VWVGqYlR
その例なら普通にScalaの方が読みやすく感じる
そのScalaの例のようなスタイルのコレクション操作は他の多くの言語じゃ一般的に使われてて目新しいものじゃないし、
Javaにも最近ついに導入された
今時そういう考え方に馴染めない奴は時代遅れで生きる資格ないってことだ
0469デフォルトの名無しさん2014/09/01(月) 08:18:09.17ID:9Mt2VCh8
>>467
names.stream().filter(n -> n.length() >= len).map(n -> n.toUpperCase()).collect(Collectors.toList());

慣れないと、Javaでも置いてかれるで。
0470デフォルトの名無しさん2014/09/01(月) 15:25:54.12ID:skqaNXzx
>>468-469
なんてこったい・・・わけわからんでー
何がどうしてそうなるのか掘り下げてちゃんとやらないとなぁ
0471デフォルトの名無しさん2014/09/01(月) 18:40:26.90ID:VWVGqYlR
>>467の上が読みやすいのって結局パターンを覚えてるからだよ
パターン抜きだと、上はいちいち処理を追ってみて動作から推測しないと何がしたいのか分からない
対して下はどういう結果が欲しいのかを宣言的に書いているので、パターンに当てはめるまでもなく意図が明らか
最初は難しいかもしれないけど、慣れてくると中で何をやっているのかは気にしなくなり、単に入出力のルールとしてコードを見られるようになる
0472デフォルトの名無しさん2014/09/01(月) 20:11:09.40ID:kVDwsFss
基本は簡単

特定の条件を満たす要素だけ取り出す
一対一で別の型へ変換する
畳込みする

だけ
0473デフォルトの名無しさん2014/09/01(月) 20:52:41.69ID:CiNZKcmO
names.stream().filter(
  n -> n.length() >= len
).map(
  n -> n.toUpperCase()
).collect(
  Collectors.toList()
);

こうやって折り曲げてみると読みやすくなる(鴨
0474デフォルトの名無しさん2014/09/03(水) 04:06:48.30ID:0/Tw8rfN
スレの速度も遅いし日本じゃScalaってあんまはやってない?
関数型言語ってだけでビビられるから?
0475デフォルトの名無しさん2014/09/03(水) 07:02:28.36ID:wZQ4Lp8r
日本以外でも別に流行ってはいないよ
どこでもScala技術者を集めるのなんて事実上不可能なので、内製でしか使えないからね
0476デフォルトの名無しさん2014/09/03(水) 10:49:14.07ID:QONXtDoH
内製やツールからだね。
英語可・ただし社内公用語は日本語だから覚えてもらう条件で日本からscala技術者募集したら、海外から捕捉されて応募がくるレベル。
0477デフォルトの名無しさん2014/09/03(水) 18:26:02.15ID:3KSJfFho
内製やツールからってのは同意だが、JVM言語の中では流行の兆しがある。
http://redmonk.com/sogrady/category/programming-languages/

TwitterやFoursquare、日本だとドワンゴとかネームバリューのある企業で実績があるので、マイナー言語の中では抜きん出てる感じ。
0478デフォルトの名無しさん2014/09/03(水) 19:38:53.60ID:X0bCDfKh
sbtのsbtconfig.txtの記述って
build.sbtみたいに行と行の間に空行を入れないとだめ?
0479デフォルトの名無しさん2014/09/03(水) 21:14:28.69ID:Fyy5dCxV
順位が徐々に落ちているのに流行の兆しとはこれ如何に
0480デフォルトの名無しさん2014/09/03(水) 21:19:33.26ID:Y1teGBhn
>>479
対して変わってねーよカス
0481デフォルトの名無しさん2014/09/03(水) 23:46:27.79ID:Ld1lmAG9
D言語よりは流行る見込みがある
そんなふうに考えていた時期が僕にもありました
0482デフォルトの名無しさん2014/09/04(木) 00:25:51.95ID:/76N4Xsr
scalaが流行ってるのか…
JavaのAPIをいい加減に使いたい人が多いだけなのか…
0483デフォルトの名無しさん2014/09/04(木) 10:39:08.15ID:t+YSKgeI
RT >>481
0484デフォルトの名無しさん2014/09/04(木) 16:21:44.84ID:phUsPz7i
>>482
JavaがC#並にバシバシ更新されるならJavaでも良かったんだけど、
停滞激しかったんでScala。
0485デフォルトの名無しさん2014/09/04(木) 19:39:07.58ID:/3JR0XIG
C#はバシバシ更新されて逆にやりすぎてカオスになってるけどな
0486デフォルトの名無しさん2014/09/04(木) 20:57:44.19ID:TIeZUDIH
C#程度でカオスなんて言ってたらScalaはどうなるんだよ
C#は設計者の将来を見通すビジョンが神憑ってるので、一見無節操に拡張してるように見える割には
驚くほど失敗が少なく互換性も保たれている
0487デフォルトの名無しさん2014/09/04(木) 22:30:46.32ID:qeEe482M
結構失敗してゴミ機能が散らかってるけど
あんまり全体に波及してないよな
0488デフォルトの名無しさん2014/09/04(木) 22:31:54.56ID:7HfK9Ux7
>>487
ゴミ機能って例えば?
0489デフォルトの名無しさん2014/09/04(木) 22:33:13.21ID:7HfK9Ux7
>>486
言うのは容易いね。
具体例を教えてくれ
0490デフォルトの名無しさん2014/09/04(木) 22:39:19.38ID:qeEe482M
delegateとかeventとか
0491デフォルトの名無しさん2014/09/04(木) 22:50:41.51ID:TIeZUDIH
eventはIDE向けの機能としては重要だろう
プロパティと同じで、単なるaddEventListener/removeEventListenerのシンタックスシュガーだ
VB6みたいないい加減な実装やJavaみたいなプリミティブな実装ではなく
関数オブジェクト(デリゲート)を選んだことで、後に関数型を自然に導入できた
まあデリゲートが高階関数で使われることが多くなった今となってはマルチキャストなんて明らかに失敗だけどね
0492デフォルトの名無しさん2014/09/04(木) 22:56:59.10ID:7HfK9Ux7
ああ、C#の話ね
0493デフォルトの名無しさん2014/09/04(木) 22:58:54.08ID:qeEe482M
Scalaはすでにゴミ屋敷だろw
0494デフォルトの名無しさん2014/09/04(木) 23:06:19.12ID:7HfK9Ux7
>>493
ゴミ屋敷って例えば?
0495デフォルトの名無しさん2014/09/04(木) 23:11:28.79ID:TIeZUDIH
>>494
じゃあ例えばScalaとJavaのコレクションを相互変換する際のベストプラクティスを教えてくれ。
知らないなら調べてみればいい。ゴミ屋敷というのがどういうことか実感できる。
0496デフォルトの名無しさん2014/09/04(木) 23:20:58.78ID:7HfK9Ux7
>>495
それってJavaの資産を再利用するためのトレードオフじゃね?
やり方がまずいってか?
0497デフォルトの名無しさん2014/09/05(金) 22:43:30.29ID:wnbFz6tV
ScalaMatsuri
http://scalamatsuri.org/

Scala祭 A会場 生中継 - 2014/09/06 09:55開始 - ニコニコ生放送
http://live.nicovideo.jp/watch/lv191315006

Scala祭 B会場 生中継 - 2014/09/06 09:55開始 - ニコニコ生放送
http://live.nicovideo.jp/watch/lv191315534

オダスキー先生 基調講演
09/06 10:15-10:55 A会場
0498デフォルトの名無しさん2014/09/06(土) 05:21:11.28ID:OOdmM81I
色々いらん機能はおいといて

Traitはどんな感じですか?
インターフェースより使いやすい?
0499デフォルトの名無しさん2014/09/06(土) 08:51:18.77ID:pFfZGxbT
>>498
使ってみればわかるだろ…
個人的には他の言語でも使いたくなるレベル
0500デフォルトの名無しさん2014/09/06(土) 10:12:24.62ID:GAr/vTxS
Scala Matsuriなう
0501デフォルトの名無しさん2014/09/06(土) 10:19:17.30ID:mR0iWa8+
小田さんが若くてイケメンだった
てっきり髭もじゃのおっさんかと思ってた

ってか英語がさっぱり分からん
0502デフォルトの名無しさん2014/09/06(土) 13:55:14.82ID:ASRhmvFn
F#とこれだとどっちが勢いあるの?どっちもどっちか?
0503デフォルトの名無しさん2014/09/06(土) 14:01:01.09ID:GuSRX+KM
ScalaはWeb系の連中がメインだから流行ってるかどうかはともかく声はでかいね
F#はモデル書くための言語なので、内々で使われててもなかなか外に情報は出にくいだろう
0504デフォルトの名無しさん2014/09/06(土) 14:46:35.77ID:ASRhmvFn
なるほど、棲み分けてる感じか
0505デフォルトの名無しさん2014/09/06(土) 17:56:20.22ID:GAr/vTxS
小田好先生、若いよね
0506デフォルトの名無しさん2014/09/10(水) 13:14:46.01ID:OGYLu77Z
なんか面白そう

Functional Programming in Scala
ttp://www.amazon.com/dp/1617290653
0507デフォルトの名無しさん2014/09/11(木) 19:10:25.20ID:FBULLL+R
>503
ScalaFXMLのおかげでデスクトップアプリもポトペタ開発ができるんだけど
もっと流行ってほしいよね。
0508デフォルトの名無しさん2014/09/11(木) 20:36:36.44ID:p8xl46sF
純粋に言語として好き好んでScala使ってる奴はあんまりいないだろ
「Javaよりマシ」で使ってる奴がほとんどで、
デスクトップアプリみたいな元々Javaが全くと言っていいほど使われていないところで
わざわざScala使いたいというニーズはほとんどないだろう
0509デフォルトの名無しさん2014/09/11(木) 20:41:29.67ID:iMb89+Ox
scalaをx86/x64バイナリにコンパイルするのやってないんかと思ったら、LLVM+Scalaでいっぱいでてくるね
0510デフォルトの名無しさん2014/09/11(木) 21:18:04.38ID:u7D02Ifa
JVMフリーにできるん?
0511デフォルトの名無しさん2014/09/11(木) 21:35:55.77ID:YYptXSvy
scala+LLVMは2,3年くらい前に話題出た気がするけどあれから進んでんの?
0512デフォルトの名無しさん2014/09/11(木) 21:50:11.60ID:ItD6Xlgu
rt.jarはどうすんだ
0513デフォルトの名無しさん2014/09/12(金) 00:33:31.24ID:0BYn51Wm
.netや.jsでもjava互換じゃないし適当なんじゃない?
0514デフォルトの名無しさん2014/09/12(金) 13:05:51.26ID:DG53EyxR
自分ではあんまりパターンマッチとかimplicit系使わないし
java8に移行でもいい気がしてきたけど
結構使ってるライブラリが中でその辺の機能使ってるんだよなー
0515デフォルトの名無しさん2014/09/12(金) 13:56:06.43ID:ylwL1QX/
Scala はオワコン
0516デフォルトの名無しさん2014/09/12(金) 14:29:07.93ID:Rlgj4qMQ
パターンマッチ使わないってマジかよ
0517デフォルトの名無しさん2014/09/12(金) 23:29:37.14ID:aSXhEBy3
val a = 1
を代入だと思ってるかもしれないが、実際にはパターンマッチしてんだぞ
val 1 = 2
とか実行時にこけるけどちゃんとコンパイルできるからやってみれ
0518デフォルトの名無しさん2014/09/13(土) 00:36:47.68ID:FW2AVG6W
$ sml
Standard ML of New Jersey v110.76 [built: Fri Jul 12 16:57:10 2013]
- val a = 1;
val a = 1 : int
- val 1 = 2;

uncaught exception Bind [nonexhaustive binding failure]
raised at: stdIn:2.5-2.10
-
0519デフォルトの名無しさん2014/09/13(土) 14:05:12.04ID:qZFgBNfb
sml じゃんって突っ込みはおいといて、Scala でも REPL じゃ動かない。
0520デフォルトの名無しさん2014/09/16(火) 21:20:01.26ID:PVbEy2qP
jreがjava8に勝手にアップデートされててscalaのreplを起動するたびにエラーが出るのですが、
scalaのバージョンアップしないとダメでしょうか
scalacはまったくできません

バージョンは 2.10.0です
0521デフォルトの名無しさん2014/09/17(水) 00:51:27.14ID:ry1QXF9R
http://d.hatena.ne.jp/xuwei/touch/20130507/1367933673
対応したのは、scala2.11以降みたいだね。

scalaのバージョンアップ無理なら、
環境変数にJRE7のディレクトリをJAVA_HOMEに定義したり、
JRE7のディレクトリのbinフォルダをPATH追記してみてはどうだろう。
0522デフォルトの名無しさん2014/09/17(水) 12:10:34.14ID:s3EEUMiw
http://www.infoq.com/news/2014/09/scala-compiler-forks
0523デフォルトの名無しさん2014/09/17(水) 21:56:45.30ID:ni7V6gFc
>>507
> >503
> ScalaFXMLのおかげでデスクトップアプリもポトペタ開発ができるんだけど

なにそれ?日本語の情報とかブログ記事が全然ないけど。。
JavaFX Scene Builder と Scalaを結びつけるようなツール?
0524デフォルトの名無しさん2014/09/17(水) 23:08:00.90ID:ry1QXF9R
https://github.com/vigoo/scalafxml
こんなんでてきた
0525デフォルトの名無しさん2014/09/20(土) 08:19:05.53ID:fKogPvtk
もうsbtもxmlもみたくないです
0526デフォルトの名無しさん2014/09/24(水) 22:25:09.86ID:yadyJ4T4
不変クラスと最適化(コンパイル時&実行時)についての質問です。

二次元の点を表すPointクラス(不変なx, y)と、矩形を表すRectangleクラス(不変なleft, right, top, bottom)がある時に、
Rectangleクラス中に矩形の左上の点に相当するPointクラスを得るメンバを定義したい場合
�@val leftTop = Point(left, top)
�Adef leftTop() = Point(left, top)
どちらが効率的か、もしくはScalaの流儀に近いのでしょうか?

Java自体初心者なので、このあたりのバイトコードの最適化や実行時のプール(キャッシュ?)が
どうなるのかもわかっていないので恐縮なのですが、Java風に愚直に考えますとメモリと実行速度の
トレードオフなのかな?程度の認識であります
0527デフォルトの名無しさん2014/09/24(水) 23:00:54.55ID:CDwr8wLF
defの方は毎回新たなPointを作って返すので不変ならキャッシュされるvalの方でおk

scala> rect.leftTopVal eq rect.leftTopVal
res0: Boolean = true

scala> rect.leftTopDef() eq rect.leftTopDef()
res1: Boolean = false
0528デフォルトの名無しさん2014/09/25(木) 22:29:14.27ID:7HVWG8nF
>>527
ありがとうございます
0529デフォルトの名無しさん2014/09/26(金) 23:55:43.45ID:o9Kksrnh
leftTopからrightBottomまで持つならオススメはできん
lazyにしても参照変数分は節約できんからなぁ
0530デフォルトの名無しさん2014/09/27(土) 16:29:51.55ID:vwp0uufz
>>523
InteliJでsbtプロジェクト作ってbuilt.sbtファイルのlibraryDependenciesに
"org.scalafx" %% "scalafx" % "8.0.0-M3",
"org.scalafx" %% "scalafxml-core" % "0.1",
を追加。

メニューのSettings-> IDE Settings-> JavaFXでJavaFX Scene Builderのパスを設定。


src/resourcesの下にfxmlとか適当な名前のディレクトリを作成、
JavaFX Scene Builderで作ったfxmlファイルをそこに保存する。

次からはfxmlファイルを右クリックしたらJavaFX Scene Builderが起動するようになるよ。
0531デフォルトの名無しさん2014/09/27(土) 16:49:08.83ID:vwp0uufz
ああ、ごめんScalaFXMLがバージョンアップしてた。
 >>524
のサイトの情報が最新ですね。

あと、Exampleのobject SimpleDemo extends JFXApp...の
 FXMLView(getClass.getResource("test.fxml"),
のパスは"../../fxml/test.fxml"
してください。

IntelliJはCommunityEditionでも大丈夫です。
0532デフォルトの名無しさん2014/09/27(土) 16:59:56.61ID:vwp0uufz
"../../fxml/test.fxml"の部分はソースの位置関係で直してくださいね。
0533デフォルトの名無しさん2014/09/29(月) 18:37:18.64ID:Cpf505MC
富豪的にやっていたところjava.lang.OutOfMemoryErrorが連発して困っているんですが
foreachをwhileに書き換えたらマシになりますか?
0534デフォルトの名無しさん2014/09/29(月) 19:27:59.24ID:7NGLULLv
まずはプロファイラでどこでメモリを消費してるのか調べる所から
ついでに言っとくと中間コレクションを作るmap/filter系ならともかくforeachをwhileにした所でほぼ意味はない
0535デフォルトの名無しさん2014/09/29(月) 23:22:57.68ID:ALvDn+8A
>>533
連立方程式だけど、全部のforeachをwhileに書き換えたら10倍のオーダーで速くなった
0536デフォルトの名無しさん2014/09/30(火) 01:18:50.48ID:DNHzTUo6
Scalaコンパイラに1週間で2つのフォーク
http://www.infoq.com/jp/news/2014/09/scala-compiler-forks
0537デフォルトの名無しさん2014/10/04(土) 16:34:13.39ID:kuR5U7xS
>>533
亀だけどStreamとかEnumerateeとか使えば?
0538デフォルトの名無しさん2014/10/10(金) 19:58:03.61ID:ZRo9q53y
どう頑張ってもbetter javaくらいにしか使えない... 皆よくScalaを使いこなせるなー.
0539デフォルトの名無しさん2014/10/10(金) 22:09:28.22ID:j7rjXjTe
Scalaを使いこなしたら支離滅裂なとんでもない糞コードになる
必要なものと良いものとゴミカスを見極めて使う言語だ
0540デフォルトの名無しさん2014/10/14(火) 21:18:29.72ID:thhDfX/j
scala でテストレポートHTML生成するのはどうやったらよいんだぜ!?
junitのxmlから生成すべき?それともspecsのstatsファイルを使うべき?
bootstrapのcssとか使えんもんかなぁ
0541デフォルトの名無しさん2014/10/14(火) 23:28:17.32ID:fJVhU1Rh
>>539
そうか? 確かに_の多用は簡潔だけど分かりにくくなったりするが
>>538
better javaとして使ってたらそのうち関数型っぽく書けるようになるさ
0542デフォルトの名無しさん2014/10/15(水) 17:13:42.45ID:dxKBuKcI
>>540
sbtの設定で出来る
http://3a3k.blogspot.jp/2012/04/eclipse-scala-sbt-specs2.html
05435402014/10/17(金) 22:44:05.70ID:TZCpFU8p
>>542
ありがとうございます!カッコイイHTMLが自動生成されました!
実際にはbuild.sbtに次のように書きました。(思い出して想像で書くのでタイポ御免)

scalaVersion := 2.10.3

libraryDep += org.specs2 % 2.3.13 % test

testOption := (html)
0544デフォルトの名無しさん2014/10/20(月) 18:21:43.29ID:sAG3BTXt
typesafe activatorってネットに繋がっていないと
コンパイルとか実行とか出来ないものなの?
0545デフォルトの名無しさん2014/10/20(月) 21:27:54.35ID:5yUl/Y88
>>544
ネット出られる必要があるのはプロジェクト作成時のテンプレート持ってくるとこくらいじゃないかな
0546デフォルトの名無しさん2014/10/21(火) 18:24:25.78ID:tvrnfHdI
http://codahale.com/the-rest-of-the-story/

皆さんお疲れ様でした〜 (^^)/
0547デフォルトの名無しさん2014/10/21(火) 19:51:25.90ID:J5QTOqbt
それもう見飽きた
0548デフォルトの名無しさん2014/10/21(火) 20:01:55.46ID:tssqKg1C
結局scalaは流行らなかったなwww
0549デフォルトの名無しさん2014/10/22(水) 03:31:45.73ID:vm6AE+XF
もう言語っていうよりフレームワークとDSLの時代だもんな
Groovyは言語仕様としての質も完成度も低いが時代の流れに完全にマッチしてた
言語自体のGroovyは死ぬ可能性はあるがGradleはもうなくならんだろう
ScalaはそもそもSBTの時点でセンスなかった
0550デフォルトの名無しさん2014/10/22(水) 20:36:11.37ID:9jtn+Bo4
俺もSBTとXML嫌いだ。あとCSSも。
3つに共通することだが簡易さと厳密さのバランスが感性に合わぬ。
俺が欲しかったのは動的すぎるのを適度に抑えた
GroovyやPythonやRubyでありScalaではなかった。
0551デフォルトの名無しさん2014/10/22(水) 21:25:48.61ID:lgl8UBuc
自分で作れ
0552デフォルトの名無しさん2014/10/23(木) 01:29:20.98ID:6Dqy3QI+
これからはセイロンの時代
0553デフォルトの名無しさん2014/10/26(日) 00:30:25.77ID:1gOcb0xq
>>552
Ceylonはnull関連以外はいいところってあるの?
>>548
大物案件ぐらいしか使わないだろうしな
play2が流行ればあるいは
0554デフォルトの名無しさん2014/10/26(日) 05:40:18.72ID:92b4LBoc
Kotlinにもあるがnull禁止型の考えは良いよなぁ
Scalaも値型を強制するような記述ができればよかったのに
0555デフォルトの名無しさん2014/10/26(日) 13:36:59.34ID:1gOcb0xq
scalaって2014年になってからまた注目度も上がっているような気がするが、
0556デフォルトの名無しさん2014/10/26(日) 13:53:23.26ID:36WJPz7e
一般の人が使う関数原語の機能なんてjava8で十分なんじゃね?
0557デフォルトの名無しさん2014/10/26(日) 13:58:22.69ID:+LJzbNuz
Java.next("笑");
0558デフォルトの名無しさん2014/10/26(日) 18:32:03.35ID:RPezmOOm
>>556
clojure で scala と java 呼びだしてる俺に隙はない
0559デフォルトの名無しさん2014/10/26(日) 19:44:18.35ID:1gOcb0xq
>>556
関数型の部分抜きにしてオブジェクト指向言語としても
scalaはbetter javaだと思うんだけど

>>558
clojureのいい本教えて!
0560デフォルトの名無しさん2014/10/26(日) 21:39:12.19ID:N4XFMXzM
>>559
何も知らねえ奴に勧める本なんかねえよ
せめてプログラミングClojureくらい読んでから質問しろやカス
0561デフォルトの名無しさん2014/10/27(月) 04:05:48.12ID:7bYMC8Tr
>>560
ありがと
0562デフォルトの名無しさん2014/10/27(月) 22:11:48.80ID:X3xt+VA5
repl のあるjava
jdkがreplを採用するまでは scalaの優位は揺るがない
0563デフォルトの名無しさん2014/10/28(火) 05:51:29.10ID:xmGpgvM5
いやIDEならJavaもreplあるでしょ
どうせJavaもScalaもIDEないと使いものにならないんだし
0564デフォルトの名無しさん2014/10/28(火) 20:31:31.30ID:r0bJEdJf
いや重いide立ち上げなきゃいけないのとは違うと思うが
上手い人はコマンドラインで結構バリバリ書いてるし
0565デフォルトの名無しさん2014/10/28(火) 21:12:12.53ID:+jM/bTCW
emacs+コマンドプロンプトなのは俺だけか…
0566デフォルトの名無しさん2014/10/28(火) 21:12:31.24ID:NKYjPxlr
Java9にREPL入れたいって話出てて織田先生が文志向の言語にREPL入れてもってコメントしてた
0567デフォルトの名無しさん2014/10/28(火) 21:18:44.39ID:0nka3Inw
>>566
確かにそうだよね
java9が値ベースになればいいのでは()
0568デフォルトの名無しさん2014/10/28(火) 21:55:40.35ID:+jM/bTCW
むしろ、replを残したままCと互換性を作る方向に行ってほしい
scalaっぽくて、replで使えるCがあればぜったい使うのだが
0569デフォルトの名無しさん2014/10/28(火) 22:23:06.93ID:ZOLvQIZQ
>>568
C++そのものだけどClingってのがあるよ
0570 ◆QZaw55cn4c 2014/10/28(火) 22:56:29.55ID:uvfLqTRT
>>568
C インタプリタをお望みか?後藤さんのCINT はいまいずこ?
0571デフォルトの名無しさん2014/10/29(水) 22:11:21.38ID:GPUXProf
ガベージコレクタ前提の言語にcは大変なんじゃね?
0572デフォルトの名無しさん2014/10/29(水) 22:37:54.80ID:sAUwAoWk
ある任意のクラスをEnumみたいに列挙したい場合に、
Enumの代わりにcaseobjectがよく例に挙げられるけど、
列挙したメンバはループで回したいからEnumみたいに自動でリスト化して欲しいんだよね・・・
なんか良い方法ないかな?
0573デフォルトの名無しさん2014/10/29(水) 23:28:58.39ID:GPUXProf
javaのenumを使えばいいんじゃ?
0574デフォルトの名無しさん2014/10/29(水) 23:50:35.90ID:sAUwAoWk
Javaは「任意のクラス」をEnum化できないよね
一応その任意のクラスがinterfaceを継承してれば、Enumにも同じinterface実装させて
メンバとして任意のクラスのインスタンス包含してメソッド移譲すればいけるけど、それは条件付きだし面倒じゃん?

それともJavaのEnumを継承するっていう裏ワザ?
あれ挙動がわからないから知ってる人おしえて欲しい
0575デフォルトの名無しさん2014/10/30(木) 00:18:46.96ID:eELuPMAu
Clojureにはdefrecordがあるんだけどね
0576デフォルトの名無しさん2014/11/07(金) 21:43:28.70ID:zWfuzZHv
reflectionってどういう用途で使うの?
0577デフォルトの名無しさん2014/11/08(土) 23:07:05.51ID:zoQOtECa
Javaから移ってきたけど、今まで可変なListで状態を管理していた部分を、不変で上手く表現できない。
例えばJavaのGUIでよくあるリスナーなんかは、都度addしたりremoveしたりするけど、
Scala流でいくと、そのたびに新しいリストを作るのかな?
(この場合、リスナーがそもそも可変な状態を持ってることが多いから当てはまらないかもしれないけど)

自分にそういった設計する力がない場合は無理に不変にしなくていいんだよね?
0578デフォルトの名無しさん2014/11/08(土) 23:16:22.94ID:rWmp+yU0
>>577
immutableでやるなら、元リストから新リストを新しく作る
だけど、元リストが不変であることから、内部的には元リストへのリンクを追加していくだけになり、それほど問題はないはず
0579デフォルトの名無しさん2014/11/09(日) 00:03:15.71ID:JWR8ncyO
>>578
なるほどありがとう、追加と削除はさほど問題ないのね。
もしプリミティブのリストの1要素が変わる場合でも、同じことだよね。頑張ってみる
0580デフォルトの名無しさん2014/11/09(日) 13:21:50.76ID:PMdr4BQl
いやイベントを発行するクラスが不変じゃなきゃ意味ないだろ
その内部でリスナを保持するコレクションが不変かどうかなんてはっきり言ってどうでもいい
0581デフォルトの名無しさん2014/11/09(日) 14:03:34.91ID:VcMedQcJ
プログラミング言語がソフトウェアの品質に与える影響
http://developers.slashdot.jp/story/14/11/08/081210/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%81%8C%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%E3%81%AE%E5%93%81%E8%B3%AA%E3%81%AB%E4%B8%8E%E3%81%88%E3
0582デフォルトの名無しさん2014/11/09(日) 16:07:41.99ID:2mw0izN0
>>576
コンパイル時にclassファイルがないとか、関数が決定してないとかに使う。
ただし遅い&コンパイル時チェック出来ない。
例えばjsonからクラス作ったりとか。
遅いことに関しては、関数ポインタキャッシュしたり動的バイトコード生成したりで対処することも多い。
http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html
0583デフォルトの名無しさん2014/11/09(日) 21:26:33.03ID:PMdr4BQl
リフレクションはフレームワークやを作る人のためのものだな
アプリケーションコードで好き勝手に使わせると最低最悪の糞ができあがる
0584デフォルトの名無しさん2014/11/13(木) 00:50:09.05ID:rsmCfUri
今日本屋行ったらコップ本の第二版がでていたけど、初版持ってても買い直す価値あるの? それともあまり変わってないの?
0585デフォルトの名無しさん2014/11/13(木) 12:57:24.04ID:qgYUywN0
>>584
書店で見たなら手にとって中身確認すればよかったじゃん。
初版も読んでないから比べられないってとこなんだろうけど。
どうせ読まないなら買いなおす価値なんてないよ。
0586デフォルトの名無しさん2014/11/15(土) 12:17:36.19ID:9CCG+v0o
“azzbzzzczzzz”
こういう文字列を”z”じゃない先頭の文字で”z”をreplaceして
以下のような文字列に置き換えたいんだけど、smartかつimmutableにやる方法無いかな?
“aaabbbbccccc”

fold使ってキーブレイクしてるんだけど、いまいちsmartじゃ無くてさ
0587デフォルトの名無しさん2014/11/16(日) 19:55:33.39ID:QkHPkx5P
scala> val ptn = "([^z])(z+)".r
ptn: scala.util.matching.Regex = ([^z])(z+)

scala> def replace(s: String) = ptn.replaceAllIn(s, (m: util.matching.Regex.Match) => m.group(1) + m.group(1) * m.group(2).length)
replace: (s: String)String

scala> replace("azzbzzzczzzz")
res0: String = aaabbbbccccc
0588デフォルトの名無しさん2014/11/16(日) 23:08:18.86ID:QkHPkx5P
>>587
こっちのがいいか

def replace(s: String) = ptn.replaceAllIn(s, m => m.group(1) * (m.group(2).length+1))
0589デフォルトの名無しさん2014/11/17(月) 22:46:31.92ID:8bpMIfSu
>>588
ごめん。分かりやすくしようとしてシンプルにしすぎた。
実際はもう少し複雑なんだ。

sealed trait X
case class A() extends X
case class B() extends X
case class C() extends X
case class Z() extends X

List(A,Z,B,Z,Z,C,Z,Z,Z)
    ↓
List(A,A,B,B,B,C,C,C,C)
0590デフォルトの名無しさん2014/11/18(火) 03:28:43.36ID:NOXAhKQ6
>>589

やっぱそうだろうと思ったわw

scala> def replace[A](list: List[A])(p: A => Boolean): List[A] = list match {
| case Nil => Nil
| case x :: rest =>
| val (xs, ys) = rest.span(p)
| List.tabulate(xs.length + 1)(_ => x) ++ replace(ys)(p)
| }
replace: [A](list: List[A])(p: A => Boolean)List[A]

scala>

scala> replace("azzbzzzczzzz".toList)('z' ==) == "aaabbbbccccc".toList
warning: there were 1 feature warning(s); re-run with -feature for details
res1: Boolean = true
0591デフォルトの名無しさん2014/11/18(火) 03:33:48.37ID:NOXAhKQ6
>>590

ちなみに、 case class より case object のがいい。

sealed trait X
case object A extends X
case object B extends X
case object C extends X
case object Z extends X

replace(List(A,Z,B,Z,Z,C,Z,Z,Z))(Z ==) == List(A,A,B,B,B,C,C,C,C)
0592デフォルトの名無しさん2014/11/19(水) 00:26:13.69ID:N2hIEB54
@BeanProperty試そうと思ったら
scala.beansパッケージをIntelliJが認識してくれない(コンパイルは通る)
同じ症状の人いる?
0593デフォルトの名無しさん2014/11/20(木) 00:01:51.08ID:cfO2qF6m
>>590
なるほど、その発想は無かった。やっぱり再帰使うしかないのか。
ただこれだと、末尾再帰じゃないからデータが増えると奴がやってくるね。

今、こんな感じでやってるんだけど、こっちの方がreadableじゃないかな。

val list = List(A(),Z(),B(),Z(),Z(),C(),Z(),Z(),Z())
list.foldLeft((list.head,List.empty[X])){(l,r) =>
val (target,result) = l
r match {
case x:Z => (target, target :: result)
case x => (x,x :: result)
}
}._2.reverse
0594デフォルトの名無しさん2014/11/20(木) 02:11:09.73ID:iZxyrQFk
>>593

readable とは何かって話だが、提示された仕様を実装するための
自分自身の思考パターンをほぼそのままコードにしているから
記述スタイルを除いて、俺にとってはこれ以上 readable にならん。

実際 >>593 を見てなぜそれでいいのか即座には理解できないでいる。
0595デフォルトの名無しさん2014/11/27(木) 23:00:55.11ID:z7rvU/Vo
Akka を使って、処理を map reduce のように
1 -> N -> 1
としたいのですが、N の送り先をどのように設定するのがベストでしょうか。
object を宛先とすれば勝手にこうなりますか?
1 -> N はわりとサンプルが多いので簡単に作れたのですが。
0596デフォルトの名無しさん2014/11/28(金) 00:06:24.07ID:7XNBsotE
aggregator パターンと呼ばれているものが使えそうでしたが、
それほど複雑なものは必要なかったので ActorRef を保持する object を作り
それを参照して送受信するようにしてしまいました。
ありがとうございました。
0597デフォルトの名無しさん2014/11/28(金) 04:04:44.49ID:O/dyue/E
pathでやったことがあるような気がする。
0598デフォルトの名無しさん2014/11/29(土) 22:13:32.35ID:minsRaFd
並列コレクションでいいじゃん
Actor使う意味がない
0599デフォルトの名無しさん2014/11/30(日) 02:19:56.72ID:eUaHiCdR
ましんまたぐんじゃないの
0600デフォルトの名無しさん2014/12/03(水) 22:36:37.34ID:mN47767/
scalaスレ最近書き込み少ない。
興味はあるんだけど、将来性はどうなん?
業務で使われているみたいな話はたまにあるけど
案件増えてるんですかね?
0601デフォルトの名無しさん2014/12/03(水) 23:13:05.58ID:WRoQBeep
なんか Scala ってごちゃごちゃしてる
0602デフォルトの名無しさん2014/12/03(水) 23:43:16.82ID:fPpGIPtv
すっからかん
0603デフォルトの名無しさん2014/12/04(木) 00:16:28.05ID:HlG2OCoT
もうコップも空だね
0604デフォルトの名無しさん2014/12/04(木) 19:40:11.01ID:ByGCb4eC
いまのところ、2年くらい前に作った自社用プログラムの保守だけ
0605デフォルトの名無しさん2014/12/04(木) 21:27:50.95ID:LLako/JK
>>604

全くないって訳じゃないけどごく稀にって感じですか。
今更ですけど、最近"Scalaで学ぶ関数脳入門"っていう本を読んで
悪くないと思ったんですけど、じゃあjavaの代替として主流になるというとどうかと。
javaがよく使われる大規模な業務システムとか大人数の開発だと
レベルの高い人と低い人がいる訳で、全員が使いこなせるとは思えなく。
Ruby(Rails)なんかで開発してる層はtwitterみたいに移行する事もあるでしょうけど...
0606デフォルトの名無しさん2014/12/05(金) 01:06:52.79ID:O+MQ7/rK
>>605
流行らないって言われたら手を出すのはやめるの?
自分の興味関心に忠実になればいいだけの話だと思うんだけどなー
まあ技術的な興味ではなく「自己啓発」でScalaに関心を持った人にとっては
仕事にできるかどうかがなにより重要なんでしょうけどw
0607デフォルトの名無しさん2014/12/05(金) 01:18:09.27ID:0DuWRmu1
Javaのラムダ式が広く使われるようになったら
Scalaももっと受け入れられるかと思っていたが
精神衛生的にJavaでラムダ式使える人はJava使っていれば済むんだよな

Androidの標準開発言語になるくらいのインパクトがないと
このままじゃね
0608デフォルトの名無しさん2014/12/05(金) 06:48:40.78ID:f5JIJXMS
Scalaはレベルの高い人同士でも各自が好き勝手に「使いこなしたら」本当にそれぞれ全然違ったコードになっちゃう
せいぜい、密接にコミュニケーションが取れる数人のチームまでだね
0609デフォルトの名無しさん2014/12/05(金) 10:21:44.33ID:NyP973bT
>>605
604 本人じゃないけど
興味関心が高まる要素の中に「流行ってる」ていうのが入ってるひとが居てもおかしくないと思うが
0610デフォルトの名無しさん2014/12/05(金) 10:51:43.47ID:fhimsKny
今後のことはわからないけど、思ったより流行らなかった
みんな4,5年前はもう少し流行ると思ってた
0611デフォルトの名無しさん2014/12/05(金) 18:17:26.09ID:Izx+IQ1I
みんな勘違いしてる
scalaがうけたのはλ式ではない

replだ
0612デフォルトの名無しさん2014/12/05(金) 21:09:47.74ID:f5JIJXMS
珍説登場
0613デフォルトの名無しさん2014/12/05(金) 22:09:55.73ID:2o7r4qwS
もうちょっと java っぽくなければやってた
0614デフォルトの名無しさん2014/12/05(金) 22:26:15.08ID:Izx+IQ1I
javaっぽい上にデフォルトでreplがあるのがscalaの売りです
0615デフォルトの名無しさん2014/12/05(金) 22:29:48.33ID:ry2Jek4M
えぇー……
0616デフォルトの名無しさん2014/12/05(金) 22:31:39.53ID:f5JIJXMS
APIの綴りが長すぎてreplやエディタで気軽にとはいかないんだよな
0617デフォルトの名無しさん2014/12/09(火) 20:30:40.08ID:/ijYo4+P
>>610
scala祭りとかやったりしてて4,5年前よりかは期待も上がってると思う
javaの代替とまではならないんだろうけど(個人的になんでjavaで書くのかよくわからん)
0618デフォルトの名無しさん2014/12/10(水) 05:28:19.42ID:L2VGD1VN
JavaがTrait導入すればいいだけなような
0619デフォルトの名無しさん2014/12/10(水) 05:44:51.94ID:iMNQyCTe
Java の標準コレクション、特にメソッドが不十分
0620デフォルトの名無しさん2014/12/10(水) 05:53:53.55ID:L2VGD1VN
Scalaは可読性悪すぎ
0621デフォルトの名無しさん2014/12/10(水) 06:03:52.85ID:+IoSb7+r
>>617
なんでJavaで書くのかわからんならScala使わなくてもいいんじゃない?
言語だけで自由に選べるならScalaより洗練されてる言語はたくさんあるよ
Scalaが使われる理由の8割はJavaが使われる理由と同じ
0622デフォルトの名無しさん2014/12/10(水) 13:22:28.41ID:KjHGoGyM
Javaが使われる理由

�@30% 今までJavaだったから、他のプロジェクトがJavaだったから
�A30% Javaが書ける人が沢山いるから
�B30% 静的言語を使いたいのにC#が利用できないから
�C10% Javaが好きだから


Scalaを使うとしたら�Bの状況で、少数精鋭でもっとマシな言語を使いたいって場合だけじゃね
0623デフォルトの名無しさん2014/12/10(水) 13:35:11.88ID:ukCIk/ls
関数型言語でも箇条書きのように羅列する人が多い
コピペしずらいとも苦情が
求められているのはシンプルで綺麗なものではなく
誰でも書けるイージーなものだったりして
プロジェクトに採用しない理由
0624デフォルトの名無しさん2014/12/10(水) 16:51:51.29ID:H2sLcAHK
本格的にドカタ開発で関数型を使うなら、変にOOを混ぜないで純粋にIPOで設計して
データ項目間のルールをそのままコードで羅列するスタイルがよさそう
それなら分かりやすいし規模的にスケールさせやすいだろう
0625デフォルトの名無しさん2014/12/10(水) 20:41:23.68ID:+OotUVpA
>>621
ちょっといいすぎた
jvmで動くしjavaapi使えるんし関数型やらんでもbetter javaなんだから
もうちょっと普及してもいいんじゃなかなぁと
0626デフォルトの名無しさん2014/12/11(木) 00:04:22.13ID:mbz3wuYK
みんな難しく考えすぎ

Java = ポインタのない C
Scala = replのある java
0627デフォルトの名無しさん2014/12/11(木) 00:38:13.73ID:8X2eWoyC
Java1.4とScala2.11ならScala選ぶけどJava8との比較だと導入の手間考えてJava8でもいいやと思ってしまう
0628デフォルトの名無しさん2014/12/11(木) 03:34:02.42ID:QzXqBBc1
まずはシンプルなビルドツールをだな
0629デフォルトの名無しさん2014/12/11(木) 21:43:00.83ID:c9V48XMs
Optionalとstreamで片付くこと多いからな
0630デフォルトの名無しさん2014/12/11(木) 21:59:57.63ID:JVLmOrgp
あとはクラス定義が面倒なのと検査例外が邪魔なのさえ何とかなればもうScalaはいいや
検査例外はラムダが普及すれば自然に滅びてくれるはず
クラス定義はC#6.0を丸パクリしてくれれば
0631デフォルトの名無しさん2014/12/12(金) 17:54:24.50ID:U4NMp7xw
えっおまえらcase classとパターンマッチと型推論いらないの
0632デフォルトの名無しさん2014/12/12(金) 22:29:25.54ID:4pnM2nTR
もちろん要るからScala使えるメンバー揃ってるならそっちにするんだが
0633名無しさん@そうだ選挙に行こう2014/12/13(土) 13:44:01.53ID:oDPenYV8
>>621の言うように、より優れた言語は沢山あるのにScalaを選んでる時点で
もともとJavaプラットフォームを使うために言語をある程度妥協してるんだよな
そこの環境と言語のバランスに強く影響される言語なのは確か
Haskellとかだと言語100%で使ってる人がほとんどなんだろうけど
0634名無しさん@そうだ選挙に行こう2014/12/13(土) 14:39:26.56ID:4dRs6Zja
そう考えると、C言語にオブジェクト指向の味付けして、その後Javaとか
C#とかにも影響与えたC++ってすごかったんだな。

中途半端な妥協言語で終わらなかったわけだから。
0635名無しさん@そうだ選挙に行こう2014/12/13(土) 15:19:10.24ID:hDRXKpp+
複雑なものが拒否されなかった時代だったからこそC++はあんなことになったんだと思う。
JavaEE辺りが本来不必要な思想的な複雑さを極めた反省からか、今は数学的なバックグラウンドがないと複雑さは受け入れられなくなってる。
今後は数学的なバックグラウンドがあってもやはり受け入れられないタイプの複雑さってのが整理されて消えていくと思うよ。

モナドとか。
0636名無しさん@そうだ選挙に行こう2014/12/13(土) 16:46:48.99ID:G1l2H28J
リスト処理とか気付いてないけどモナドなんですが…どうやって消すの?
0637名無しさん@そうだ選挙に行こう2014/12/13(土) 18:04:37.26ID:/wm7pCNP
>>634
C++を使うくらいなら、Cの構造体を駆使して頑張るよ
0638名無しさん@そうだ選挙に行こう2014/12/13(土) 20:13:22.58ID:LmsGKyNP
どっちかっていうと、モナドって Haskell だから意味があるんであって。
個人的には do式、Scala で言うと for式 がモナドごとに名前付けられるとよかったな
F# のコンピュテーション式?みたいな
0639名無しさん@そうだ選挙に行こう2014/12/13(土) 20:34:32.79ID:/wm7pCNP
プログラムの計算の列を抽象化したものがモナド
つまり、どの言語にもモナドが隠れている

逆に、モナドを明示的に示す形でしか計算の列を書けなくしたのがHaskell
0640名無しさん@そうだ選挙に行こう2014/12/13(土) 21:10:36.52ID:LmsGKyNP
いやだからその抽象を明示的に扱えるのが意味のあるところなんだろ?
0641名無しさん@そうだ選挙に行こう2014/12/13(土) 21:21:40.33ID:/wm7pCNP
>>640
「意味のある」の意味が、「論文をたくさんかける」「実際に動くコードを使った計算理論の説明がしやすい」なら、その通りです
0642名無しさん@そうだ選挙に行こう2014/12/13(土) 21:39:36.96ID:LmsGKyNP
おっと。確かに意味があるって書き方が曖昧だったね。
文脈で構文の話だって分かると思ったんだけど
0643名無しさん@そうだ選挙に行こう2014/12/13(土) 22:42:17.35ID:QWnf+Ls3
「抽象」って「隠れて」たり「在」ったりするものなの?
おしえて偉い人
0644名無しさん@そうだ選挙に行こう2014/12/14(日) 15:15:11.95ID:uIhmr5dV
>>643
抽象は隠れてますがあります

「+」と「*」を抽象化した「演算」ですが、「+」と「あ」を抽象化したら「文字」です
0645デフォルトの名無しさん2014/12/17(水) 22:56:42.97ID:d9eSqfr3
ScalaってRailsより生産性高い?
0646デフォルトの名無しさん2014/12/17(水) 23:11:19.91ID:eIMkWRP9
>>645
言語とフレームワークは比較対象としておかしい
Play framework と Ruby on Rails あるいは、
Scala と Ruby なら比較できる

また、どういう領域、目的でそれらを適用しようとしているか明確にしないと答えようがない
0647デフォルトの名無しさん2014/12/17(水) 23:23:28.37ID:+9Ck4qiZ
実質RubyとRailsはイコールみたいなもんだからおk
認めたくない人は多いだろうけど現実見ようぜ
0648デフォルトの名無しさん2014/12/18(木) 00:11:10.26ID:kTQgNQyl
Railsで半日でやれることをScalaだけで半日でやれる気はしない
Scalaで数ヶ月かかることをRailsでやれる気もしない
0649デフォルトの名無しさん2014/12/18(木) 00:15:16.30ID:06tYSw2u
 
 で も や る ん だ よ
0650デフォルトの名無しさん2014/12/20(土) 21:26:57.48ID:JtAcEBQT
Scalaの正しい発音ってどんなのですか
自分はピザーラと同じ発音をしていますが
0651デフォルトの名無しさん2014/12/20(土) 21:48:33.73ID:7VpkwSit
>>948
そしたらJava使う
0652デフォルトの名無しさん2014/12/21(日) 17:51:33.44ID:hFJCQocc
>>650
スカラ
0653デフォルトの名無しさん2014/12/21(日) 18:06:40.92ID:JX15aD5+
シャラ
0654デフォルトの名無しさん2014/12/26(金) 17:03:59.57ID:gZ41P3hh
個人で触ってるだけなんだけど、Scalaz無しのScalaをまともに使える気がしない。
でも、仕事で触るなら普通Scalaz入ってないってマジなの?
みんなどうやってカバーしてるの?
0655デフォルトの名無しさん2014/12/26(金) 19:43:38.60ID:PAahfQLZ
>>654
Scalazさっぱり分からない
どこから手を付ければいいのアレ
0656デフォルトの名無しさん2014/12/26(金) 23:17:20.21ID:1JYz2Hcm
Scalaはお前が想像しているほど難しいことには使われていない
大抵、ベターJavaとしてWebのクソつまらん似たようなコードをちょっとだけ簡潔に書くのに使われているだけ
0657デフォルトの名無しさん2014/12/27(土) 13:19:09.99ID:kjN3kdaX
関数型バリバリのライブラリは名前が抽象的すぎ
他人が書いたコードで使われてると、メンバの役割と名前の対応を暗記してないと何やってるのか全然わかんない
複数人での開発だと、利用範囲を絞り込んでリストでも作っとかないと使い物にならないね
0658デフォルトの名無しさん2014/12/27(土) 17:02:38.36ID:8fK95Rgh
それは命名規則の話でscalaの問題としては一般化できないし
プログラミングにおける問題としては一般的すぎるような
0659デフォルトの名無しさん2014/12/27(土) 17:52:34.59ID:OVKBEHKE
名前が過度に抽象的になりがちなのは関数型プログラミングの特徴的な問題ではあると思うぞ
関数型では操作のパターンを抽出してコードを共通化していく場合が多いが、
それを端的に表現するような言葉は自然言語には少ないからね
0660デフォルトの名無しさん2014/12/27(土) 18:20:56.75ID:kcXcAVhx
命名規則を機能から辞書順序集合への写像として分析する分野があってもいいはずだ
0661デフォルトの名無しさん2014/12/27(土) 23:32:38.32ID:8fK95Rgh
まぁ名前で分かった気になるくらいなら
暗記するまで毎回定義(実装)を確認しに行くくらいの方が
長期的には有益な気もする
IDE使っていれば大した手間じゃないし

数式なんて形式的意味しかない(つまり意味のない)名前ばっかりだが
それほど問題じゃないところを見ると
単に馴れの問題かと
0662デフォルトの名無しさん2014/12/27(土) 23:53:09.39ID:elScS0oP
日経ソフトウェアでScalaの連載が始まるね。

ただ、あの雑誌いつまでも最初の導入の記事ばかりなのが少し残念。
あの雑誌の想定読者が幅広く設定しているから、
だれでも読み始めることができる導入部分しか企画として通らないのだろうけど。

連載一ヶ月分のページ数内で、一見さんにも「おおっ」って言わせられるような、
具体的な応用例とか載せてくれると面白いのだが。
0663デフォルトの名無しさん2014/12/28(日) 00:08:02.80ID:2ZQi4yDZ
事実だとしたら3年遅い
0664デフォルトの名無しさん2014/12/29(月) 07:09:07.73ID:X4sGBoa8
>>655
すごいhaskell本みながら独習scalaz勉強すればいいんじゃないかな?
0665デフォルトの名無しさん2014/12/29(月) 09:41:00.97ID:RT8SA5DK
新宿Scala座
0666デフォルトの名無しさん2014/12/29(月) 10:55:32.51ID:U8iTlWQL
もういい加減RustかSwiftか仕様決めてくれよ!
あとScala--出せ

ほんとにC#なんかが天下取っちまうぞ
0667デフォルトの名無しさん2014/12/29(月) 11:08:36.28ID:tirsBVZi
C#は今パターンマッチを導入しようとしてるね
JVMとの相性の悪さが致命的だが、言語としてはもうC#でいいな
0668デフォルトの名無しさん2014/12/29(月) 17:33:44.59ID:0o73V2FG
KotlinあたりがちょうどScala--にあたらなかったっけ
0669デフォルトの名無しさん2014/12/29(月) 20:24:50.76ID:CSKZlxbR
>>667
一瞬 C#とJVMの相性が悪い? って勘違いした
0670デフォルトの名無しさん2014/12/29(月) 20:34:51.09ID:CSKZlxbR
Scalaは底辺の頭の悪さをなめてるんだよ
反変共変+−どっちだっけ?より、C#の out/in の方が分かりやすいかなあ
0671デフォルトの名無しさん2014/12/29(月) 20:48:01.82ID:X4sGBoa8
>>670
はっきり言うとそういう底辺はプログラマを目指すべきじゃないでしょ
javaどころかphpも触っていけないタイプ
精々vbaでもやってて下さいって感じ
0672デフォルトの名無しさん2014/12/29(月) 20:57:36.33ID:tirsBVZi
>>667
>C#とJVMの相性が悪い?
そのつもりだよ
C#をJVMで動かすのってできそうでできないんだよ、JVMの機能が全然足りなくて
逆に.NETでJava動かすのは簡単なんだけどね
0673デフォルトの名無しさん2014/12/29(月) 21:22:12.92ID:CSKZlxbR
>>671
その通りだなあ。最近読みやすさが一番大事になってきた

>>672
うん。Scala も足を引っ張られてるって話ね。
だから、何か JVM 上で C# 動かすプロジェクトがあるのかと勘違いした
0674デフォルトの名無しさん2014/12/30(火) 06:16:34.48ID:ByhLfRSz
JVM言語で.NET上でも動くやつなかったっけ?
0675デフォルトの名無しさん2014/12/30(火) 07:10:39.99ID:vxok/W8a
.netでscala動かすって話は立ち消えになっちゃったのね
できたら凄いのに
0676デフォルトの名無しさん2014/12/30(火) 07:58:48.14ID:dxBK7ujR
動かせない理由はないし実際昔はあったけど、
C#じゃどう考えてもクソ強力なIDEサポートを捨てるデメリットの方が遥かにデカいだろ
ScalaはJVMに引きずられて不自然な制限がたくさんあるから、言語仕様面でも総合的にはC#より強力とは言い難い
0677デフォルトの名無しさん2014/12/30(火) 08:32:04.32ID:nLX6XrO1
頑張ればネイティブコードも吐き出せるようにできるのだけど、そうするとJava系のライブラリ資産が使えなくなるのが厳しい。
何かと惜しいよね。Scalaは。

今時のLL言語って、RubyもPythonも独自のVM上で動かしているんだから、
ScalaがJVM上の言語というのも悪い話ではないはずなのに。
0678デフォルトの名無しさん2014/12/30(火) 11:34:42.32ID:qWUDrM3h
JVMの方ではErasureのお陰で高階型が楽に実装できたけどCLRの方では無理っぽいんじゃなかった?
0679デフォルトの名無しさん2014/12/30(火) 11:45:20.86ID:bUalCEjV
>>676
>ScalaはJVMに引きずられて不自然な制限がたくさんあるから
例えばどういうのがあるの?
JVMの制限が無ければこうした方が良かったのに、と思うような仕様って?
0680デフォルトの名無しさん2014/12/30(火) 13:20:31.63ID:dxBK7ujR
高階型はそもそもJavaとも互換性無いでしょ
Scalaみたいにリフレクション使った無茶な実装でいいんならどうとでもなるよ
JVMに由来するScalaの制限としては、値クラスやClassTagなんかが代表的かな
JVMの仕様を知らなければ誰が見ても不自然
0681デフォルトの名無しさん2014/12/30(火) 14:19:06.01ID:3v7rngRa
Scalaの教訓

必要なのはJVMではない
REPLだ
0682デフォルトの名無しさん2014/12/31(水) 00:00:46.89ID:+fY/V6Ks
>>679
コンテナの型消去なんかが代表的じゃない?
後これはjvmの由来ではないけどjavaとの互換性のためにNull型のインスタンスのnullが存在していて
scalaでも悪さする場合があるところとか
0683デフォルトの名無しさん2014/12/31(水) 00:06:10.74ID:+fY/V6Ks
>>681
replというか重要なのはライブラリの豊富さと実行環境の普及度と信頼性じゃないか?
他の関数型の言語が言語としての完成度はscalaよりも上でも中々普及しないのはここらへんじゃないかな
まぁscalaが従来のオブジェクト指向言語としても使えるっていう柔軟性もかってるだろうけど
0684デフォルトの名無しさん2014/12/31(水) 00:23:44.33ID:geaLZRSJ
ライブラリの豊富さと実行環境の普及度はJavaと同じ
商用プロジェクトでもないかぎり、プログラマはそれほど高い信頼性を求めていない

scalaの普及度が低い理由は、理数系のテキストで使うプログラム言語に採用されてないからでしょう
連立方程式あたりを標準ライブラリとしてデフォルトで入れて、replから使えるようにすれば普及度が上がるでしょう
0685デフォルトの名無しさん2014/12/31(水) 00:57:30.80ID:/vIALUin
数値計算に使おうとするとJVMのせいでパフォーマンスが出ないから、理数方面だと魅了はないだろ
Javaが遅いって意味じゃなくて、パフォーマンスを出そうとすると結局JVM的に普通なコード(=Javaと変わらないコード)になるって意味な
0686デフォルトの名無しさん2014/12/31(水) 01:07:33.17ID:+fY/V6Ks
>>684
>ライブラリの豊富さと実行環境の普及度はJavaと同じ
だからその上で関数型言語を使えるようにした事がscalaがある程度成功した要因じゃね?
javaは十分に普及してるから
0687デフォルトの名無しさん2014/12/31(水) 15:02:29.32ID://62RoNN
JVMについては、Windows環境でのJVMの冷遇っぷりがひどかったというのもあるよね。
Linuxだと JVMアプリが素直に立ち上がるけど、Windowsだと何かと面倒。

学術的な分野では、一時期、フリーな開発環境として、Javaがよく使われていた。
当時は、Cの開発環境とかCのライブラリを教えるよりかは、Javaの方が教えやすかった。
その影響からか、理数系分野でJavaのライブラリを使うのも流行っていた。
例えば、Wekaとか。
http://en.wikipedia.org/wiki/Weka_(machine_learning)

Scalaの数値計算のアプリとかライブラリとしては、
Scalala(行列系) とか Scalalab(Matlab系) とかもある。
https://github.com/scalala/Scalala
https://code.google.com/p/scalalab

今は、この辺、何もかもPython信者ばかりになってしまって、それはそれでツマラナイ状況。
0688デフォルトの名無しさん2014/12/31(水) 22:42:46.98ID:geaLZRSJ
なんか、オライリーがpython信者な気がする
0689デフォルトの名無しさん2014/12/31(水) 23:23:48.51ID:A/ir56Zb
時代は、scala から pythonへ。なの? www
0690デフォルトの名無しさん2014/12/31(水) 23:33:57.37ID:/vIALUin
プログラミングより数式に興味がある人は
Scalaみたいな複雑な言語覚えるより
環境構築が楽で出来合いの道具が揃ってて覚えるのも使うのも簡単で周りに使える人の多い言語を選ぶ
0691デフォルトの名無しさん2014/12/31(水) 23:36:51.09ID:geaLZRSJ
今調べたら家にある統計関係のオライリー本はpythonとRのやつしかなかった
たぶん、どっかの大学がpythonを推してるのではなかろうかと推察
0692デフォルトの名無しさん2014/12/31(水) 23:40:25.33ID:A/ir56Zb
どっかの大学? MIT のことですかねぇ。
0693デフォルトの名無しさん2015/01/01(木) 01:58:57.72ID:izRh1GEq
二兎を追う者は一兎をも得ず

【意味】
二兎を追う者は一兎をも得ずとは、欲を出して
同時に二つのことをうまくやろうとすると、
結局はどちらも失敗することのたとえ。
0694デフォルトの名無しさん2015/01/01(木) 13:01:24.78ID:kfvwaXN/
結論: せめて二百兎くらいまとめて追いなさい
0695デフォルトの名無しさん2015/01/01(木) 18:34:04.96ID:V3per93J
いかに有望な候補手に探索を集中させるかが大事
0696デフォルトの名無しさん2015/01/02(金) 01:02:19.98ID:iMKpuMxF
MSと違ってGoogleはJVM作者いたりしてうまくやってたけど、Android抱えてからは訴訟抱えて新しいリソースは社外から集めてる印象。
0697デフォルトの名無しさん2015/01/02(金) 08:34:59.85ID:UoXQYS7H
Javaコンパイラ開発チームにいてMSに移った人が1.5以降のJavaはクソと言ってたぞ
0698デフォルトの名無しさん2015/01/02(金) 15:10:16.18ID:2iH+RE9d
Generics来て1.5から神になったんじゃねえかw

エンジニアのためのエンジニアのくせに
開発者の視点でしか物を見てなすぎだろ
0699デフォルトの名無しさん2015/01/02(金) 15:43:00.67ID:9VoF1EwG
>>697
なお1.5以前のjava(笑)は・・・
0700デフォルトの名無しさん2015/01/02(金) 15:55:30.20ID:9VoF1EwG
そういえばジェネリックなかったころのjavaってどうやってたの?
0701デフォルトの名無しさん2015/01/02(金) 16:11:57.35ID:ZewlL3X3
Objectクラスとダウンキャストかな
0702デフォルトの名無しさん2015/01/02(金) 16:12:40.44ID:UoXQYS7H
Javaのジェネリクスはキャスト自動挿入のシンタックスシュガーに過ぎないから無くても大きな違いはないよ
>>697で批判されてたのはその点
0703デフォルトの名無しさん2015/01/02(金) 22:44:54.05ID:Cj7wITub
キャストの自動挿入と手動でキャストするのが大差無いって、
caseクラスやapplyメソッドの全否定じゃないの???
0704デフォルトの名無しさん2015/01/03(土) 01:15:06.46ID:lFDIcml9
javaのジェネリクスって不変だもんね
? がでてきてやっと共変とかできるようになったんだっけ
0705デフォルトの名無しさん2015/01/07(水) 19:57:22.94ID:4MYIFh4i
scalaってweb系以外の業務で使われてる実績あるの?
0706デフォルトの名無しさん2015/01/07(水) 23:02:37.20ID:yytTE4BC
関数型の真価はむしろ大規模業務アプリケーションのモデル記述で発揮されると思うけど、
それならF#みたいにもっと宣言性を強調した言語のほうが適してるだろうな
ScalaはOOが出しゃばりすぎ
0707デフォルトの名無しさん2015/01/08(木) 22:23:41.24ID:Z9Q3anII
>>705
意思決定法の本に付属してたプログラムがscala使ってた
コードはなかったけど
0708デフォルトの名無しさん2015/01/09(金) 13:13:18.61ID:GLe7yQcF
OOがでしゃばりすぎっていうかOOで関数型を表現したって感じの言語だし
0709デフォルトの名無しさん2015/01/09(金) 17:45:25.30ID:LBD0z7pz
俺もはじめ実用性でScala使おうと思って今もScalaを覚えるつもりだけど
Haskellの入門書チラ見してこれHaskell理解してないと関数型使えてるとは言えないと悟りScala一本で関数プログラミングを覚えるのはあきらめた
Haskell理解せずにScala使っても構文と周辺機能の恩恵でバグを減らせるJavaの上位互換くらいでしかないんじゃないかな
実績が上がっても業界的には下請けの水準が上がればJavaの代わりに使わせようくらいの残念な扱いになりそう
0710デフォルトの名無しさん2015/01/10(土) 09:12:35.22ID:kTT0/GFr
業務で使うメリットがあるのは関数型というか宣言型だろうなあ
高階関数よりデータ間のルールを見通し良く記述することが重要
0711デフォルトの名無しさん2015/01/10(土) 23:51:28.68ID:+xbnxNj/
>>709
>Haskellの入門書チラ見してこれHaskell理解してないと関数型使えてるとは言えないと悟りScala一本で関数プログラミングを覚えるのはあきらめた

scalaz「せやな」
>>710
コレクションの操作とか業務でも普通に使うんじゃね
filter map あたりは便利だし
0712デフォルトの名無しさん2015/01/11(日) 00:49:45.65ID:bIz/N1xB
>>711
filtermap使った程度で関数やってますなんて言ったら嘲笑もんじゃね
あとScalazとHaskellじゃ情報量的な学習難易度がダンチとおもわれ
0713デフォルトの名無しさん2015/01/11(日) 01:24:40.42ID:yONU8dYO
>filtermap使った程度で関数やってますなんて言ったら嘲笑もんじゃね
いや >>710が高階関数よりって言ってたから
高階関数ってコレクション操作とかで使うよなって

scalazは確かにhaskellやってからじゃないときついかも
型クラスとか意味不明だろうし
0714デフォルトの名無しさん2015/01/11(日) 02:13:53.45ID:jQsmpaL2
結局は、mapだろ?
Obj_Aで、Func_Bを実行する

ここでA,Bは無関係でもよく、継承関係にならず、
インターフェースみたいなもの

例えば、Bがディレクトリツリー全体を走査する機能で、
Aがコピーする機能とか、A'がファイル情報を見る機能とか

Bがリモコンで操作する機能なら、
Aはテレビ・ゲーム・ラジコンなどに変わる
0715デフォルトの名無しさん2015/01/11(日) 02:58:31.24ID:VrB2aC8y
そもそも関数型の手引きがだいたいHaskellで書かれてるので
それ読まない縛りで書こうとしても関数型言語でOOかよくて宣言型で書くレベルから
先に進めないかと
0716デフォルトの名無しさん2015/01/11(日) 04:26:17.53ID:y/Gfhyr7
99.9%の人にはJAVA8で充分
0717デフォルトの名無しさん2015/01/11(日) 05:17:42.55ID:4kOuNpF9
関数型の一歩目って map より fmap じゃない。どっちにしろ scala だとよく分からないで終わる気が。
0718デフォルトの名無しさん2015/01/11(日) 16:08:37.52ID:Z07Ss1Ij
>>716
せやな
scalaなんて名前出した途端に99.9%の人に拒否られるやろw
0719デフォルトの名無しさん2015/01/11(日) 19:14:38.32ID:Bz+OwwHJ
>>716

Java9とかJava10でどんどん関数型の機能が取り入れられるだろうから
ますますどうなることやら
0720デフォルトの名無しさん2015/01/11(日) 19:55:49.75ID:CzPOjlNR
>>719
パターンマッチでダウンキャストする日も近いかもね
0721デフォルトの名無しさん2015/01/11(日) 20:00:22.54ID:m1MZJ4zp
マルチパラダイム言語の優位とはなんぞや
オブジェクト指向との親和性だけか?
0722デフォルトの名無しさん2015/01/11(日) 20:46:55.19ID:yONU8dYO
scalaで言えばオブジェクト指向の言葉で書かれているから
オブジェクト指向の人でも使えるし書けるし習得もしやすい事とか
haskellみたいな純粋な関数型だと手続きっぽく書いたりするのできなくはないけど
結構大変だし
0723デフォルトの名無しさん2015/01/12(月) 11:58:57.00ID:LpPMJZpp
ScalaはどっちかというとC#のようにOOを関数型で補完するという感じだったのに
関数型ジャンキーのオモチャにされてカオスになっちゃった
0724デフォルトの名無しさん2015/01/12(月) 15:29:04.60ID:SxPXluwc
Scalaはオブジェクト指向に無理矢理擬似的な関数型を取り入れたことが原因でカオス言語になったよなー
0725デフォルトの名無しさん2015/01/12(月) 15:49:36.23ID:twZsvoP0
まるでカオスじゃなかった時代があったかのような

大体Javaが十分にカオスな時点で
カオス上等くらいの心構えじゃないと
0726デフォルトの名無しさん2015/01/12(月) 16:13:31.58ID:seCuarF3
「デフォルトでreplが入ったjava」で良かったのに…
0727デフォルトの名無しさん2015/01/13(火) 21:28:10.74ID:F/RYjFqI
なんでreplそんなに好きなの?
0728デフォルトの名無しさん2015/01/13(火) 23:05:56.67ID:qLrwRMDC
最近、「コンパイルして人間が読めないファイルを作る」が普及を妨げていることが分かった
0729デフォルトの名無しさん2015/01/14(水) 00:55:32.43ID:un+T0AHM
個人開発レベルですが拡張メソッドと@specializedがScala使う理由ですね。
他に後押ししてるのは、<:<とか@BeanPropertyとか。
しかし@specializedは値クラスを扱うというやり方でJavaにも輸入(輸入元はC#っぽいが)
0730デフォルトの名無しさん2015/01/14(水) 07:29:34.44ID:8Q2tOiyG
lambdaに10年かかったJavaに値クラスなんか未来永劫入らないよw
たかが既存機能(ネストクラス)のシンタックスシュガーですらあの有様なのに、
VMの大大大改造の必要な根本的な改修なんか今更できるわけがない
クソGenericsと同じようにerasureで実装するんなら結局配列に入れたりgenericsで扱う際に
ボックス化が必要になるからパフォーマンス上のメリットはほぼ無いし
0731デフォルトの名無しさん2015/01/15(木) 16:46:22.32ID:ojV8YXVD
Windows8にScalaをインストールし、Cygwinでscalaを動作させているのですが
標準入力をリダイレクトしたりパイプから送ったりすると、動作はするものの以下の警告(エラー?)が出ます。
stty: standard input: Inappropriate ioctl for device
原因もよくわかっていないのですが、警告が出ないようにする方法はありますでしょうか?

$ cat ../input | scala
stty: standard input: Inappropriate ioctl for device
Welcome to Scala version 2.11.4 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> 42
res0: Int = 42

scala> :quit
0732デフォルトの名無しさん2015/01/16(金) 20:05:27.44ID:LsYSUQKD
今時cygwinとかないわ
どうせプロダクションで使えないのに苦労するだけ時間の無駄だろ
Winでなきゃいけないなら普通に使うか仮想マシンにLinux入れてSSH
0733デフォルトの名無しさん2015/01/16(金) 20:37:58.60ID:PoJiHUt9
そういうのは結構です
知ってる人のみ答えてください
0734デフォルトの名無しさん2015/01/17(土) 16:14:15.91ID:rEt2+N9g
>>731

やってみた:
```
$ cat <<EOF > hello.txt
println("Hello")
EOF
$ cat hello.txt |scala
```
うちのLinuxでやったところ、
731 と同様に、REPLが立ち上がったあと、エラーなしに Helloが出力されるものの
その後の端末の動作がおかしくなったけど? (キー入力を受付けなくなる)

これって、やりたいことは、ScalaをREPLモードで立ち上げて出力を得たいってこと?
ならば、
```
$ echo 'println("Hello")' | xargs -0 -i scala -e {}
Hello
$
```
みたいなのでどう?
こっちなら端末(tty)がおかしくならないで戻ってこれたけど?
0735デフォルトの名無しさん2015/01/25(日) 08:33:41.26ID:4n+jRXJn
Scalaのフレームワークってどんなのがあるん?
0736デフォルトの名無しさん2015/01/25(日) 10:30:41.54ID:XPwi6yeC
何をするフレームワークを聞いてるのか
0737デフォルトの名無しさん2015/01/25(日) 19:01:00.78ID:/ILbZFHt
>>735
メモ帳+コマンドプロンプト開発フレームワーク
0738デフォルトの名無しさん2015/01/25(日) 21:19:35.79ID:kLlDeCRS
>>737
それ標準の統合開発環境や
0739デフォルトの名無しさん2015/01/26(月) 00:23:04.31ID:WHjADl5S
>>735
定番はplayだろ
0740デフォルトの名無しさん2015/01/26(月) 23:13:17.14ID:5QqZI2K9
ScalaとJavaは両方できた方がいいですかね
0741デフォルトの名無しさん2015/01/26(月) 23:19:26.76ID:S26t8+EC
というより、両方できないとあまり意味がないかと
Javaの仕様に合わせるためにいろいろ諦めてる歪な言語なので、
Javaとの相互運用性を捨てたら割に合わんよ
0742デフォルトの名無しさん2015/01/26(月) 23:28:31.60ID:Ly3CAIWB
「できる」の意味が「読める」なら、JVM言語は一通りできなきゃダメですね
最新のアルゴリズムやフレームワークは、どの言語で紹介されても理解してツギハギしなきゃダメですから
0743デフォルトの名無しさん2015/01/26(月) 23:29:16.68ID:2Y7GB+OC
Scalaを使うときの検索ワードはほとんど「Java なんとか」だわ
Javaが読めないと無理と断言できるしメリットも無いと思う
0744デフォルトの名無しさん2015/01/26(月) 23:39:02.19ID:/uyO0/FQ
エラーメッセージがJVMからのそれだし
0745デフォルトの名無しさん2015/01/26(月) 23:40:22.32ID:Ly3CAIWB
全部で28MBだから、アクターモデルが標準から消えなければ、scala 自体をjavaの標準API程度には理解しておけと言いたいが、Akkaになっちゃったからな…
0746デフォルトの名無しさん2015/01/27(火) 07:26:46.34ID:tYNOUScu
今現在Java未経験だとしても、他のメジャーな言語は複数経験してて
Javaもやろうと思えばサンプル見ながらなんとなく類推で使えるくらいでないと
この手の言語に手を出すのは早い
0747デフォルトの名無しさん2015/01/27(火) 07:53:52.06ID:ox5yAQX/
scalaの良書は何がありますか?
javaはそこそこ理解している前提
0748デフォルトの名無しさん2015/01/27(火) 21:54:36.75ID:zxc1Q4JE
がっつりやるならコップ本(Scalaスケーラブルプログラミング)がバイブル的扱い
http://www.amazon.co.jp/gp/product/4844330845/
0749デフォルトの名無しさん2015/01/27(火) 23:48:48.93ID:JHhKc92n
洋書除くとコップ本と逆引きレシピだなあ
他はバージョン的にも辛いものがある
とはいえコップ本はちょっとハードル高いし、
逆引きレシピは他の本で一通り基礎をやった後に手元においておくタイプの本だと思うので
この辺は初学者のハードルになってるんじゃないかと思う
0750デフォルトの名無しさん2015/01/27(火) 23:57:45.62ID:mf0t6skC
Akkaについて詳しく書かれてる本なんてないですよね?
0751デフォルトの名無しさん2015/01/28(水) 06:56:24.95ID:D4DppUD9
コップ本は高い厚いハードル高い
0752デフォルトの名無しさん2015/01/28(水) 14:26:40.66ID:NJCG/69A
洋書でのオススメはありますか?
0753デフォルトの名無しさん2015/01/28(水) 22:32:29.91ID:i2j0jpQg
洋書読めるなら、ドキュメント読めとしか…
0754デフォルトの名無しさん2015/01/28(水) 23:41:04.82ID:phfxK0em
Scalaで関数型デザインパターンの本は何冊か洋書で出てて、他の関数型言語やってないなら割とオススメ
0755デフォルトの名無しさん2015/01/29(木) 23:04:03.89ID:x+DZkfv5
オブジェクト指向言語でデザインパターンを駆使して実現していた目的の半分くらいは、
関数型では言語自体の仕組みで代替できる
0756デフォルトの名無しさん2015/01/29(木) 23:13:59.55ID:Vl4KJLr6
GoFデザインパターンのことを言ってるなら、
その多くは単なる関数オブジェクトを別の名前で呼んでるだけだから、
ガチ関数型じゃなくても第1級関数さえ使える言語なら代替できるよ
0757デフォルトの名無しさん2015/01/29(木) 23:25:08.62ID:aSkGGm54
> その多くは単なる関数オブジェクトを別の名前で呼んでるだけだから、

多くは? たとえば?
0758デフォルトの名無しさん2015/01/30(金) 00:12:24.21ID:J3I/JY19
その代替できるってことも慣れてないと知らないことあるから本あるよってことね
シンプルなストラテジーやファクトリは単に高階関数で済むとか外部イテレータあんまり要らないとか
0759デフォルトの名無しさん2015/01/30(金) 00:17:44.05ID:3t6BwGFS
オブジェクト指向は名詞的だけど、関数型言語は動詞的だから、なんとかかんとか
0760デフォルトの名無しさん2015/01/30(金) 19:14:17.47ID:oSV8k0Me
Scalaの和書ってAmazonで見ると2010年か11年ごろに出版されたものばかりですが、今から入門する場合でもそういう本使って問題なしですか?
http://en.wikipedia.org/wiki/Scala_(programming_language)#Versions
見てると、2013年のver2.10でガッツリ変更入ってる感じに見えるのですが
0761デフォルトの名無しさん2015/01/30(金) 19:28:53.42ID:3t6BwGFS
>>760
本の中でアクターモデルの解説がどうなってるか、買う前に確認した方がいい
0762デフォルトの名無しさん2015/01/31(土) 08:17:42.32ID:fHA0y3z4
♪ 世界で一番優れた民族アクター、アクター共和国
0763デフォルトの名無しさん2015/01/31(土) 10:55:47.40ID:YMt5PyZL
http://takedanet.com/archives/1018752890.html
0764デフォルトの名無しさん2015/02/02(月) 21:07:43.93ID:O11nlKXF
ScalaはJava並の人気言語になりますかね
0765デフォルトの名無しさん2015/02/02(月) 21:11:12.13ID:HgzOzGeM
JVM言語はパフォーマンス気になるようになったら
コアをJavaに差し替えればいいだけじゃないかな
パレートの法則的に
0766デフォルトの名無しさん2015/02/02(月) 21:11:21.42ID:UKP5zWl9
Javaの1.6以降てかいてありますね

Software Requirements
The Scala software distribution can be installed on any platform with a Java runtime, version 1.6 or later.
0767デフォルトの名無しさん2015/02/02(月) 21:23:41.88ID:KT6cnHtO
>>764
残念ながらそれはないだろうね
JavaやC#が「カオスにならない程度に」関数型を取り入れている一方
ガチ関数型も注目を集めつつある今、
Scalaは大衆言語にも関数型にもなりきれない極めて中途半端な言語になってしまった
0768デフォルトの名無しさん2015/02/02(月) 21:41:28.52ID:PMz0XDHH
JavaがScala以上に関数型になることもないだろうから
差が縮まった時点でScalaに乗り換えるシナリオもなくはない
0769デフォルトの名無しさん2015/02/02(月) 22:01:09.69ID:9cAbPLA5
Scalaはガチ関数型として使うにはあまりにも面倒臭すぎる
まずは例外乱発のファッキンJavaAPIをなんとかしてくれ
0770デフォルトの名無しさん2015/02/02(月) 23:23:30.18ID:QSwprIrE
>>769
この時のための検査例外だったのだッ!全て自動で直和型にッッッ!。
なおscalaの直和型()は
0771デフォルトの名無しさん2015/02/03(火) 05:30:48.03ID:DuwxATIz
scalaは、関数型言語としての書き方が
分からなくても、最悪Javaっぽく書くことができるというのがメリットだと思う
0772デフォルトの名無しさん2015/02/03(火) 07:26:59.62ID:rhxr8Hwo
Eitherみたいに全てを型で保証しなければならない系のガチなやつは
いったん使うと決めたら使い通さないとあまり意味がない
無理のない範囲で既存資産と折り合いをつけながら使うならJavaやC#程度が限界だね
0773デフォルトの名無しさん2015/02/03(火) 13:23:28.73ID:cFvQZFKE
Eitherってなんて発音するの?
いーざー?えいざー?
0774デフォルトの名無しさん2015/02/03(火) 14:53:46.12ID:PEE4K+0t
either は中学英語の範囲だべ
0775デフォルトの名無しさん2015/02/03(火) 19:53:51.39ID:wiwHxQ34
イーざー
オア
アイざー

ざは、舌の先をかみます(ダにもきこえる)

How to Pronounce Either - YouTube
https://www.youtube.com/watch?v=5zC-XJEhxms
0776デフォルトの名無しさん2015/02/03(火) 20:30:35.04ID:uHK9mhCY
>>768
scala の優位性は「関数型」ではなく「デフォルトで入ってるREPL」だと何度言ったら…
0777デフォルトの名無しさん2015/02/03(火) 20:42:30.71ID:v7tAs31H
関数型要素いらないならGroovyでいいじゃん
0778デフォルトの名無しさん2015/02/03(火) 20:46:27.60ID:SQgfjbpU
初心者のお遊び以外でREPLが役に立つのはデバッグ実行中だけだが、
その際は当然デフォルトのREPLなんか使えないし
デバッグ中のREPLなんかIDEで20年前から実現されていること
0779デフォルトの名無しさん2015/02/03(火) 20:50:31.17ID:uHK9mhCY
普及を競うなら、庶民がIDEを入れるまでに高いハードルがあることを知るべきかと
0780デフォルトの名無しさん2015/02/03(火) 20:54:04.23ID:rhxr8Hwo
一般庶民なら黒い画面にコマンドをパチパチ打つよりは
インストーラでIDE入れて実行ボタン押す方がずっとハードルが低いと感じる人が多いかと
0781デフォルトの名無しさん2015/02/03(火) 20:59:11.11ID:uHK9mhCY
IDEの問題は、scala本がIDEを紹介してない点
一方、javaの入門書ではなぜかeclipse前提なのが多いという不思議
0782デフォルトの名無しさん2015/02/03(火) 21:05:02.90ID:rhxr8Hwo
そりゃ言語とIDEを分けて考えられない程度の人たちを相手にする段階じゃないからだろ
自分用にオプティマイズされたWebの世界しか見てないと錯覚するかもしれないが、
「ごく一部のマニアだけが使っている言語」の域を出ないよ
0783デフォルトの名無しさん2015/02/03(火) 21:12:01.84ID:uHK9mhCY
>>782
一般というより、学部の卒業研究で導入できるかどうかが分かれ目かと
「コンパイル」を教えないで済む方法がある分だけ、javaよりはscalaかと
0784デフォルトの名無しさん2015/02/03(火) 22:19:20.83ID:hYktHZLE
CI環境作りだすとIDEの設定が面倒すぎてもうVimでいいやになる
0785デフォルトの名無しさん2015/02/04(水) 00:06:48.95ID:FTYyQxvZ
商用UNIXでviしか使えなかった時はパニックになった
0786デフォルトの名無しさん2015/02/04(水) 08:54:58.61ID:onPjtyvU
化学系出身だけど,実社会でc言語絶世でC++に移行中のときにpascal習った。
今何教えてるんだろう。と思ったら、情報系でjava教えてるのはわかるとして、
化学系はC言語教えてる。データ解析のこと考えたら関数型言語教えて、
実社会のこと考えるならjava系がいいと思うのだが、
何故に大学の授業って「一般教養化」していくんだろうか。
0787デフォルトの名無しさん2015/02/04(水) 09:01:55.06ID:onPjtyvU
>>784
素の状態だと普通に使えるのにIDEの設定間違えるとうまく動かないのな。
IDEの勉強なんぞしたくないし、するのがおかしい。
0788デフォルトの名無しさん2015/02/04(水) 09:41:37.84ID:4ZehlrdF
そもそもIDEなんて開発者を囲い込むかマイナー言語の使用者を増やすかのどちらかのためのものだし
前者は一般的機能すら独自化して他言語に応用が利かず閉じており後者は完成度が低くすぐ行き詰る
IDEとVimはWindowsとMac(Unix)の違いと同じくコード片を実行する以上のことをしようと思ったらIDEは足かせになるだけ
ただリファクタリングのときだけはリネームにIDEを使う
0789デフォルトの名無しさん2015/02/04(水) 11:27:14.17ID:UfeJxSul
君たちは何を言っているのかね
IDE使おうぜ
0790デフォルトの名無しさん2015/02/04(水) 14:14:05.79ID:4ixiaMOO
>>788
こういう連中が普及を妨げてるよね
テキストエディタの方が使い勝手がいい言語は確かに多い。
しかし、それらとScalaが決定的に異なる点がある。Java資産を使うということ。
Scalaの最大のアピールポイントはそこにあり、純粋に言語としては魅力に欠ける。
従ってJavaのIDEを前提にした既存の綴りの長いライブラリを使わざるを得ず、
補完のないエディタによるコーディングには相当な苦痛を伴う。
0791デフォルトの名無しさん2015/02/04(水) 16:32:41.25ID:onPjtyvU
>>790
要するに既存のライブラリが使いたい。ていうのと
ライブラリの中のモジュール名が長くて覚えにくくてタイプミス
犯しやすいから、IDEを使わざるを得ない。と
0792デフォルトの名無しさん2015/02/04(水) 16:42:08.84ID:2SCz0dM4
なんか最近ズレてる奴が多いな
お前らちゃんとscala使ったことあんの?
0793デフォルトの名無しさん2015/02/04(水) 17:27:50.16ID:rrYn295i
リネームさえバシッとできればテキストエディタでいい。他の機能大して使いこなしてない。
0794デフォルトの名無しさん2015/02/04(水) 19:16:46.74ID:5h793BIM
JDTとは構造ちがうからプラグイン機構のあるエディタでなら普通にやれるはず
http://scala-refactoring.org/
0795デフォルトの名無しさん2015/02/04(水) 20:32:57.09ID:tjSlws+J
Scalaが人気出るのは言語仕様が固まって後方互換性を維持できるようになったとき
今はまだa better Javaでしかない
0796デフォルトの名無しさん2015/02/04(水) 21:02:31.17ID:Ds7L7DGt
まだってBetter Javaを名乗るなら互換性は必須でしょ
あえて言うならFaster Ruby (without Rails)だな
0797デフォルトの名無しさん2015/02/04(水) 21:09:36.38ID:nU6uTuJs
Java の資産が利点であり、最大の欠点な気がするが
0798デフォルトの名無しさん2015/02/04(水) 21:12:22.22ID:Ds7L7DGt
最大の欠点はカオスな標準ライブラリと
それを生み出し続ける関数型マニアコミュニティだろ
0799デフォルトの名無しさん2015/02/04(水) 21:50:49.97ID:lFSTLdPe
最大の欠点は、Windowsネイティブコンパイラの不在
0800デフォルトの名無しさん2015/02/04(水) 22:07:17.34ID:tgcu4mjH
型安全
0801デフォルトの名無しさん2015/02/04(水) 22:44:45.06ID:onPjtyvU
>>799
それ作りづらいっていう意味か、windowsなんぞ後回しって言う意味か
jitがあるからそんなの必要ないって意味か、作っちゃいけない制限があるのか
どれ
0802デフォルトの名無しさん2015/02/04(水) 23:02:04.77ID:lFSTLdPe
>>801
いつまでたってもスタンドアロンの売り物を作れないという意味
0803デフォルトの名無しさん2015/02/04(水) 23:05:21.10ID:FJftdSk8
クラスファイルとしてはJavaとほぼ同等だから原理的にはAOTコンパイラ作れるはずだけどモバイルや組み込み環境以外で必要か?
0804デフォルトの名無しさん2015/02/04(水) 23:08:43.60ID:rrYn295i
scalaに期待することではない気がする
0805デフォルトの名無しさん2015/02/04(水) 23:10:08.55ID:Ds7L7DGt
もともとJavaがほとんど使われてない分野でわざわざScala使う必要はないわな
WinならC#でいい
0806デフォルトの名無しさん2015/02/04(水) 23:25:26.47ID:lFSTLdPe
そもそもjavaには互換性がなかったという強烈なオチがある
嘘だと思ったら、10年前に作ったclassファイルを実行できるかいくつか確認してみるとよい
0807デフォルトの名無しさん2015/02/04(水) 23:27:34.76ID:FTYyQxvZ
しかしJavaFXなら標準でプライベードJRE同梱のインストーラ作れるまでにはなったからな
ネイティブコード云々はもう拘らなくてもいいかな
0808デフォルトの名無しさん2015/02/04(水) 23:38:55.74ID:FJftdSk8
ちょっと前のセキュリティ強化で古いAppletが一切動かないとかじゃなくて、Java5のころの普通のclass動かないのか?
0809デフォルトの名無しさん2015/02/05(木) 00:40:57.50ID:gLl3//bv
play2+scalaで考えれば
IntelliJで決まりだと思うんだけどなー
typescriptやらマイナー言語にも対応してるし
>>795
scalaってまだ人気でてない扱いなのか?
そらjavaやらc#やら超メジャー言語に比べればそうかもしれんけど
http://redmonk.com/sogrady/2015/01/14/language-rankings-1-15/
とか見ると14位くらいあるし この上みるとperl rubyが落ちるとしてもちょっとあがるのが難しい感じ
0810デフォルトの名無しさん2015/02/05(木) 06:41:50.33ID:jxBo3eTF
>>806
Enterprise分野で使用されるようになっているので
流石にJava1.5以降は後方互換性に気を使ってる
ソースから再コンパイルすればほとんどは動く
(動かないケースはゼロではない)
バイナリそのまま持って来たらちと厳しいけど
最近のJavaはサーバサイドで使われているだろうからそれでも問題ないのでは
Androidは知らん
0811デフォルトの名無しさん2015/02/05(木) 08:58:10.85ID:IVBxxALS
バイナリ互換じゃなかった? ソースをコンパイルできない
0812デフォルトの名無しさん2015/02/05(木) 09:10:05.05ID:eURNC5PH
-sourceや-targetでの古いバージョンの指定は順次切られてるね
古いソースでバージョン指定しないと警告大量に出るのはわかるけどコンパイル出来なくなる変更なんかあったっけ
0813デフォルトの名無しさん2015/02/05(木) 11:46:00.11ID:amkou/MB
>>810-812
どっちみち Enterprise用途は業者レベルのスキルの人が使うから、互換性がなくても問題ないかと
個人のPCで人知れず眠ってるclassファイルが動かないのは痛い
10年前の俺のソースなんか読むのも嫌だよ

ただ、Enterprise用途でも、ライブラリ関係の互換性がなかったり仕様が変わってるからコンパイルが失敗したり、警告の嵐に遭遇する
文字コード関係はバージョンやOSによっても、入力コードを統一していてもエラーなく動作が異なるから注意が必要かと
0814デフォルトの名無しさん2015/02/05(木) 12:27:49.58ID:5jIFMaXm
10年前のapache commons普通に使えたけど
0815デフォルトの名無しさん2015/02/05(木) 12:32:27.15ID:4O3ODdxu
ドカタ現場じゃソースのないサードのライブラリも使うこともソースが失われてることも
再コンパイルしてもなぜか動かないことも日常茶飯事よ
0816デフォルトの名無しさん2015/02/05(木) 12:36:13.46ID:amkou/MB
>>814
tomcat とかはそろそろヤバい
0817デフォルトの名無しさん2015/02/07(土) 01:25:58.53ID:0RBvpWmK
ひさびさにスレが伸びていると思ったら、いつもの、不満大会かよ。

ところで、今月の日経ソフトウェア見たけど、JavaFxが手軽に使えるのは面白そうだと思う。
0818デフォルトの名無しさん2015/02/07(土) 01:46:12.63ID:jVkbAda3
まぁそのJavaFx自体が
手軽に使えるとは言いにくい気もするのだが
0819デフォルトの名無しさん2015/02/07(土) 02:20:39.39ID:Jfs2dga4
GUIエディタの出来ってどう?
0820デフォルトの名無しさん2015/02/07(土) 08:28:57.46ID:UxV2OHq5
・Swingに比べれば安定している(メタな仕組みじゃなくてXMLを編集してるだけだからかな)
・業務アプリなどのベーシックな画面を作る程度の最低限の機能は備えている
・ビルダ内でXMLを直接表示/編集できないのが極めて不便
・スタイルの設定は色なども全て手書き
・ビルダ自体のUIが貧弱、アニメーションが鬱陶しい
・コードとの連携が無いに等しく、コントローラは完全に手書き
VSと比べるならWinFormsとWPFのデザイナを足して16くらいで割った感じだね
0821デフォルトの名無しさん2015/02/07(土) 09:33:32.85ID:us6S6BiX
IntelliJはUIはいいんだけどもっさりしてて…
Eclipseに戻ってしまう
0822デフォルトの名無しさん2015/02/07(土) 14:56:51.24ID:xuToCkQ7
似たタイプのGUIビルダの中だとFXMLはVSのXAMLどころか
QtのQMLと比べても全くお話にならないレベル
AndroidのレイアウトエディタからIDE統合とXMLエディタを抜いた感じ
0823デフォルトの名無しさん2015/02/07(土) 15:06:38.13ID:jVkbAda3
もっさり具合はEclipseも負けてないと思うが

明らかに高負荷な処理をやっているときに
もっさりなのは我慢するとして
Eclipseは後ろの処理がよく見えず
予想外のところで引っかかるからストレスがたまる
感覚的な話だけど
0824デフォルトの名無しさん2015/02/08(日) 00:46:32.38ID:Sm8ZKvEA
ide単体としてはvisual studioさんが凄すぎてな
0825デフォルトの名無しさん2015/02/08(日) 01:04:46.73ID:8BxICIem
VSの本当の「統合」を知ってしまうとIntelliJやEclipseでのScalaみたいに
出来合いのシェルにとりあえず言語追加したレベルのものを統合開発環境
と呼ぶのには抵抗を感じるようになるね
0826デフォルトの名無しさん2015/02/08(日) 07:52:39.29ID:z9uApDmq
そこまで差があるとは思えんのだが

もっさりだが
0827デフォルトの名無しさん2015/02/08(日) 12:06:36.99ID:lYLvg9qm
自分の知らない場所で勝手にファイルを編集される部分があるのが嫌だ
いちいちマウスをクリックするのが嫌だ

そんな私のIDEは、メモ帳+コマンドプロンプト です
0828デフォルトの名無しさん2015/02/08(日) 12:13:49.36ID:mWfbdRxi
Scalaはそれでいいかも知れないけど
JavaはIDEなしなんて考えられないんだが
0829デフォルトの名無しさん2015/02/08(日) 18:23:50.74ID:8ToV8Cnf
>>825
同意
「機能」としては言葉の上では似たようなものに思えるかもしれないが、入力補完のスピードとか含めた完成度がぜんぜん違う
VSは確かに凄いよ
0830デフォルトの名無しさん2015/02/08(日) 19:34:45.99ID:dveMpYIi
scalaでtuiアプリを作りたいんですが
何かいいモジュールはありますか?自分で探しましたが見つけられませんでした…
0831デフォルトの名無しさん2015/02/08(日) 19:44:21.15ID:dveMpYIi
すいません、言葉足らずでした
tuiを簡単に実装できるモジュールです
0832デフォルトの名無しさん2015/02/09(月) 23:27:21.77ID:ybRvGCvO
Javaの3rdPartyでよければググってこんなのがあったけど
Scalaは調べた事ないから知らない

lanterna
https://code.google.com/p/lanterna/
Java Curses Library
http://sourceforge.net/projects/javacurses/
0833デフォルトの名無しさん2015/02/11(水) 21:43:16.16ID:zQ7E6eZT
日本国内でScalaで書かれたWebサービス提供してるとこある?
0834デフォルトの名無しさん2015/02/12(木) 00:57:30.42ID:Uh2ZxlVl
http://jp.scala-users.org/scala-cases-in-japan.html
あんまり載ってないけど

あといわゆるWebサービスじゃないが
サーブレットという意味では
GitBucketは参考になるしお世話になってる
0835デフォルトの名無しさん2015/02/12(木) 06:31:18.03ID:pHxoVY9X
やはりjavaのを使わないといけないですよね、ありがとうございました
0836デフォルトの名無しさん2015/02/12(木) 06:32:04.79ID:dcvh813Z
AndroidのアプリもScalaで書けそう?
0837デフォルトの名無しさん2015/02/12(木) 07:50:33.41ID:yDIkiztO
Scala使うのが目的でなくアプリを作るのが目的なら時間の無駄だから絶対にやめておけ
バックエンドだけScalaで書け
0838デフォルトの名無しさん2015/02/12(木) 13:06:48.61ID:nQ7pUD5q
うち、Scalaでwebサービス構築してるよ。
Scalaである必要があるかと言われたら、まぁないと思うけど。
0839デフォルトの名無しさん2015/02/12(木) 14:54:34.50ID:2uNgZJlO
Scalaが次世代言語の最有力と聞いてコップ本を根性で読破したけどかなり難しいな
今までやった言語の中で一番難しかったわ
0840デフォルトの名無しさん2015/02/12(木) 15:15:34.33ID:5oB/LYoT
prologやhaskellのパラダイムを個別に習得しないと意味ないだろ
0841デフォルトの名無しさん2015/02/12(木) 19:56:49.29ID:Uh2ZxlVl
prologもhaskellも癖というか思想が強すぎて
マスターする頃にはScalaのこと忘れてそう

あと、もはや次世代じゃないし
最有力ってのも買いかぶりすぎだと思う
そうなったら面白いとは思うけど残念ながら
0842デフォルトの名無しさん2015/02/12(木) 20:39:52.34ID:5oB/LYoT
Scalaをスクリプト言語のように使うなんてストラディヴァリウスのヴァイオリンで釘を打つようなもの
0843デフォルトの名無しさん2015/02/12(木) 21:00:33.56ID:Uh2ZxlVl
そんなこと言うとREPL君がまた暴れますよ

釘が打てりゃ上出来じゃない?
みんな自分の頭を打ってるよ
0844デフォルトの名無しさん2015/02/12(木) 21:00:35.61ID:DvTDGtdT
>>839
後半の半分はGUIのところ以外は読まなくてもOKだよ
読んだところで、どうせ仕様が変わるだろうし
0845デフォルトの名無しさん2015/02/12(木) 22:06:50.52ID:dcvh813Z
コップ本はいい本だと思うけど最初に読む本じゃないな
初学者向けの関数型プログラミング本を先に読んだ方がいい

>>841
Scalaが登場してから10年ちょっと経ってその間にJavaでのパラダイムも一巡して
JVM上の言語も増えてきたってことで適度に枯れて機が熟したってことじゃないの
ErlangやHaskellだって前世紀の言語だしな
0846デフォルトの名無しさん2015/02/13(金) 06:37:18.79ID:mocLL0Pr
JVM入れてScala入れてEclipse入れてPlay2入れてEclipseからPlay2使えるようにするまでがめんどい
もっと簡単にならんの
0847デフォルトの名無しさん2015/02/13(金) 07:41:02.91ID:od1SHQ4F
たいぷせーふあくちべーたーとかいうの使えば簡単にできるんじゃねえの
使ったことないけど
0848デフォルトの名無しさん2015/02/14(土) 13:35:17.93ID:EkzT7W5q
トンカチを持つと、人間がみんな釘に見える(危険)
0849デフォルトの名無しさん2015/02/16(月) 22:43:20.04ID:GqArjrVy
共変と反変ってどういう状況で使えばいいの?
イマイチ使い道がわからん
0850デフォルトの名無しさん2015/02/16(月) 22:48:34.96ID:EASUHFdM
無理して使う必要はない
というか、あなたが分からないってことは、普通の人も分からないはずなので、よほど教育をほどこした内輪プロジェクト以外では使うべきではない
0851デフォルトの名無しさん2015/02/16(月) 23:08:21.76ID:2/NgXL9j
意味をなさない名前のせいでわけわからんくなってるだけで
そんなに難しいかなあ

実際にやることといえば
リストを読み取り用に受け取るメソッド宣言するとき、
その引数のジェネリクスを共変にするってだけだろ?

それ以外の使い方なんて見たことない
0852デフォルトの名無しさん2015/02/16(月) 23:21:01.23ID:5aq/WjdM
反変と共変の指定の仕方はC#のin/outが抜群に分かりやすい
基本的に反変は入力に、共変は出力に使う
0853デフォルトの名無しさん2015/02/17(火) 20:13:56.80ID:tgjlJ38r
その昔Cを知っている人がC++をa better Cとして使ったように
Scalaもまずはa better Javaとして使っておけばいいんじゃない?
マルチパラダイムな汎用性の高い言語なんだしイディオムを習得するのはその先でもいい
いきなりコップ本とか読んじゃって躓くのがこのパターン
0854デフォルトの名無しさん2015/02/17(火) 20:38:00.48ID:yKx9IB7b
反変・共変ってライブラリ作る人以外はあまり気にしなくていいと思う。

型変数使ってないからイメージだけだけど、例えば以下のようなtraitをイメージする。
trait Sample { def m1(p: String): CharSequence}

これを継承したクラスでm1を実装するわけだけど、
def m1(p: String): String
みたいに必ずStringを返す実装をしたとしても、
元のtraitは満たせるはずだよね?ってのが共変。

def m1(p: CharSequence): CharSequence
みたいに、引数はCharSequencenならなんでもいいよってしても、
同じく元のtraitに対してStringを渡したら絶対処理できるよね?ってのが反変。

厳密に話すともっとややこしくなるだろうけど、イメージとしてはこれで十分だと思う。
0855デフォルトの名無しさん2015/02/18(水) 07:01:34.05ID:26ZUZzKY
Javaのはアレ反変兇変って言わないんだな…
インターフェースの定義側で反変兇変できるの羨ましい
0856デフォルトの名無しさん2015/02/18(水) 07:31:12.55ID:FJC9eT5Z
ドカタが怖がるから共変反変言わないだけで、ワイルドカードがあれば十分でしょ
定義側で方向指定すると制限がインターフェース全体に及んでしまうしな
まあ、常に利用する側で指定させるやり方だとジェネリックなクラスを自分で定義せずに使うだけのドカタも
ワイルドカードを駆使しなきゃいけないわけで、明らかに大失敗だけどね
0857デフォルトの名無しさん2015/02/18(水) 23:28:53.73ID:8ge0yGxX
>>853

C→C++ は、ほとんど上位互換だけど、
Java→Scalaは、文法がだいぶ違うからなあ。。
Scalaは、Javaのバックグランドが利用できる強みは大きいけど。
肝心のJavaが下火だと、、、。

Perl→Ruby は、移行することで世界が広がったけど、
今、Scalaに移行したところで、あんまりメリットがないんだよなあ。

だけど、日経ソフトウェア見て、ScalaFX(JavaFX)は、少し使いたいと思った。
0858デフォルトの名無しさん2015/02/18(水) 23:32:10.88ID:8ge0yGxX
Scala言語が生きそうな道って、関数型言語の並列性を発揮できるような分野?
究極的にはハードウェア記述とか?

ScalaによるFPGA
http://www.slideshare.net/miyox/synthesijerscala-prosym-2015
0859デフォルトの名無しさん2015/02/18(水) 23:38:29.26ID:zm4f9Bf3
Haskellみたいな副作用強制的に分離させられる言語ならまだ納得出来ないこともないが
関数型言語で並列性って基本セールストークじゃない?

そのFPGAはScalaでDSL書きやすいって話で並列あんま関係なさそう
0860デフォルトの名無しさん2015/02/18(水) 23:55:32.02ID:/cB70mAI
関数型の恩恵で並列化できたとしてもパフォーマンスの向上はあまり期待できないとどこでもいわれている
並列化前提のときに生産性と安定性を求めて選ばれるものだろう
0861デフォルトの名無しさん2015/02/19(木) 00:39:25.53ID:1LBnym+M
フォーマルメソッド()
0862デフォルトの名無しさん2015/02/19(木) 02:53:13.07ID:z6pi1paq
副作用を強制的に分離させられて基本的に正格評価な言語はないんですか
0863デフォルトの名無しさん2015/02/19(木) 05:33:06.57ID:aN1WlKg3
そのような言語のメリットを教えて
0864デフォルトの名無しさん2015/02/19(木) 05:54:35.43ID:DBmDNRKA
elmとかidrisとか
0865デフォルトの名無しさん2015/02/19(木) 07:24:23.90ID:kP+TkhZJ
Scalaはどこでも普通に副作用書けるしそれを処理系が厳密に検知するのも不可能だから
特に並列性の面で有利なことはないよ
0866デフォルトの名無しさん2015/02/19(木) 19:53:14.29ID:iyHfikAq
JVM上で動くことが大きいな
Javaはなんだかんだで広い範囲で使われてきたので、それを実行するJVMの安定性は
大きな魅力だね
0867デフォルトの名無しさん2015/02/19(木) 20:40:18.85ID:cTaAdkiA
とりあえずvalしとけ
0868デフォルトの名無しさん2015/02/19(木) 20:49:49.18ID:kP+TkhZJ
変数書き換えはともかく、静的検査を厳密に行うにはOO流の多態を完全に捨てなきゃいけない
だけどそこまで行ってしまうとScalaの存在意義が…
0869デフォルトの名無しさん2015/02/19(木) 22:41:25.19ID:1LBnym+M
OO流の多態?
せいぜい程度の問題であって
完全に捨てるってのは分からん
0870デフォルトの名無しさん2015/02/19(木) 23:22:01.23ID:gsoDS5fN
>>866
JVMというより、Webサーブレットでjavaの資産が使えるということかと
Webサーバーと特殊すぎるデバイスドライバ以外ではjavaの製品は見たことないし
0871デフォルトの名無しさん2015/02/21(土) 14:50:47.16ID:hXBq8SET
>>870

職場のメインOSがWindowsオンリーで
開発のバックプレーンはLinux で、
一方で、Macを使う社員やお客さんもいるので、アプリを提供できればうれしい、
というような会社では、Javaはありがたい存在のはずなんだけどね〜。、
いかんせん組込み系の会社なので、Javaはものすごく嫌われている。www
Web系の会社だとJavaに抵抗感ないのだろうなあ。

> Webサーバーと特殊すぎるデバイスドライバ以外ではjavaの製品は見たことないし

Notesとか、その手のデータベース系のソフトは、インストするとJVMを個別のフォルダにインストールしてたような。。
0872デフォルトの名無しさん2015/02/21(土) 17:33:59.46ID:+7rc5lcp
Javaは、とにかくユーザーインターフェイスがウンコ
0873デフォルトの名無しさん2015/02/21(土) 20:05:33.50ID:NZKwFt1Y
swtそこまで悪くないやん
どうしてもいやならjambiとか
0874デフォルトの名無しさん2015/02/21(土) 22:37:29.92ID:OrY6Qps/
SWTはJavaじゃないだろ
美しいJavaの世界を汚す、忌むべき不浄な存在
0875デフォルトの名無しさん2015/02/22(日) 04:28:23.51ID:RMVSmAx/
亀レスだか、確かにC#のin/outの説明の方が単語がとっつきやすいかも。
http://www.atmarkit.co.jp/fdotnet/csharp4/csharp4_06/csharp4_06_01.html
0876デフォルトの名無しさん2015/02/26(木) 01:31:24.03ID:Nr5g+HBJ
Scalaの技術書3冊ぐらい読んで勉強したけど
実務で使えるようになった気がしない
0877デフォルトの名無しさん2015/02/26(木) 06:36:37.59ID:Zl1401DB
実務でScala使えるかどうかは勉強じゃなくコミュニケーション能力の問題
0878デフォルトの名無しさん2015/03/03(火) 14:46:19.40ID:AJWFRdg7
Scalaではどのフレームワークが人気ある?
0879デフォルトの名無しさん2015/03/03(火) 16:09:14.39ID:68X/j5zu
メモ帳+コマンドプロンプト開発フレームワーク が一強かと
0880デフォルトの名無しさん2015/03/03(火) 18:16:59.76ID:5uN1b58U
なんのフレームワークについて聞いてるのかはっきりしろよな
Web?開発?PJ管理?
0881デフォルトの名無しさん2015/03/07(土) 17:38:06.77ID:XVcFmamb
Web…play2が制したと言ってもいいんじゃないかな。liftは負けた
開発…IntelliJが無難かな。eclipseはJava臭いので避ける人も多い
    emacs(or vim, sublime) + ensime も実用レベルになってきてる感じ
0882デフォルトの名無しさん2015/03/07(土) 17:42:46.26ID:nGmpbqSS
俺もLiftはもうやめたけど、JSON部分とBoxクラスは嫌いじゃなかった。
前者は、Json4sとして今後も使う予定。
0883デフォルトの名無しさん2015/03/08(日) 17:20:16.83ID:uwMJxf/3
みなさまはsbtを使っていますか?
0884デフォルトの名無しさん2015/03/09(月) 10:43:08.81ID:i1+W+GiO
>>883
むしろsbtを使わなくてもscalaってできるものなの?
sbtを使いこなせてる気は全くしないけど、常に使った状態でしかscala触ったことが無い。
0885デフォルトの名無しさん2015/03/09(月) 12:24:55.36ID:pBNngRzj
IDEなら特にビルドツールがなくても動くし、
パッケージ管理が不要なら極端な話Makefileでも十分
Javaと組み合わせるならMavenの方が好まれる場合もあるだろうな
0886デフォルトの名無しさん2015/03/09(月) 13:30:49.43ID:kghuyWld
IDEAしか使ったことないけど
sbtじゃないとコンパイルとか実行とかめっちゃ遅くない?
0887デフォルトの名無しさん2015/03/19(木) 07:18:20.92ID:zLrW7Ast
Scala2.11からscala.concurrentのfutureメソッドがdeprecated扱いになったのは、
Future と Promise を別トレイトに分け、Future の apply を使わせるようにしたかったから?
このへん、future { ... } を Future { ... } に変えた意図がいまいちわからない
誰か教えて
0888デフォルトの名無しさん2015/03/19(木) 19:51:58.99ID:CUrmDVG3
メソッドが露出してるのが嫌だったんじゃない?
0889デフォルトの名無しさん2015/03/20(金) 14:35:25.40ID:rBzvPe9E
>>888
なるほどです
import が単純に書けるし(Java から使う場合でも?), メソッド future が複数ある混乱が解消されたのか
0890デフォルトの名無しさん2015/03/25(水) 20:28:32.12ID:U2HPVK+c
インプレスから出た新しいScala本ってどう?
0891デフォルトの名無しさん2015/03/31(火) 01:18:23.04ID:MB3vpbl+
scalaもunsigned-64bitな値を扱いたい場合はBigInt使うしかないのかな
負数の扱いが面倒臭いよお
0892デフォルトの名無しさん2015/03/31(火) 05:57:45.72ID:JhV/+9nw
>>890
評判は良さそうじゃん
http://i.imgur.com/qwJ4Idf.jpg
http://i.imgur.com/mfIlMxo.jpg
0893デフォルトの名無しさん2015/03/31(火) 06:23:45.90ID:yvrxgcRM
>>892
この手の本の評判はほぼサクラだから
0894デフォルトの名無しさん2015/03/31(火) 14:43:24.20ID:8nbXovb7
scalazの参考に買うけど、アクターみたいに消えそうな気がする
0895デフォルトの名無しさん2015/03/31(火) 21:18:09.48ID:f3A/wUNg
>>890
英語版は最後まで読んだけど、関数型言語の基本(〜モナドまで)を学ぶ為に
言語としてはScalaを使いましたって感じの本。
関数型言語らしい書き方を知らない人や、
関数型言語は使ってるけどScalaは未経験って人にはすごくオススメ。
OOをやりたい人にはオススメ出来る要素がない。
0896デフォルトの名無しさん2015/04/01(水) 20:55:01.09ID:DWY+tqpL
もしかして、scalazのことは触れてない?
0897デフォルトの名無しさん2015/04/02(木) 20:07:10.31ID:fsx5Rs/7
新宿スカラ座
0898デフォルトの名無しさん2015/04/02(木) 23:49:09.29ID:+/mwTHcA
free monadが普通に出てきてびっくらこいた
初心者を脱して関数型scalaを勉強したい人にはお勧め
逆に本当の初心者には結構難しいと思うのでお勧めできない
最初のほうから型シグネチャから関数を実装せよとか結構むずいと思うし

>>896 scalazそのものにはふれてなかったと思う
0899デフォルトの名無しさん2015/04/03(金) 16:40:27.90ID:1AHy5fM3
パターンマッチって何に使うわけ?
アレって、prolobの99 problemをスラスラ解けるような人が使って、
初めて何かの役に立つようなものだよね
0900デフォルトの名無しさん2015/04/03(金) 19:25:03.40ID:8h72Uu9M
switch のパターン漏れを防ぐのに使えると思ってる人がいるみたいだけど、その認識が正しいのかすらよくわからない。
0901デフォルトの名無しさん2015/04/03(金) 23:29:45.47ID:r+0zeEBB
>>899
ア、アクターモデル…
0902デフォルトの名無しさん2015/04/04(土) 03:39:59.68ID:jDVLk+hW
>>899
case class (もしくは unapply を実装したクラス) でパターンマッチしたときの威力たるや
もう switch には戻れないよね
0903デフォルトの名無しさん2015/04/04(土) 10:16:02.08ID:ywxAt/r6
Haskellだとパターンマッチを使ったオーバーロードができて超絶便利なんだけど
Scalaのパターンマッチは引数に使えないし対象の型も限られてるからあまり魅力はないね
0904デフォルトの名無しさん2015/04/04(土) 15:42:05.88ID:4YoGdZdr
>>899
データを作ってそこからデータを取り出したい時に使える
switchにそういう機能はない

    sealed trait Tree[+A]
case class Leaf[A](a:A) extends Tree[A]
case class Branch[A](l:Tree[A],r:Tree[A]) extends Tree[A]

val t = Branch(Leaf(3),Leaf(3))

val k = t match {

case Branch(l,r) => l
}

これでleftの葉を取れる
でleafが来た時の分岐を忘れてるけどその時は警告を出してくれる
0905デフォルトの名無しさん2015/04/04(土) 15:45:57.26ID:4YoGdZdr
後はList[Optin[A]]のデータを取り出したい時とか
case Some(x)::_=> x
逆にOption[List[A]]のデータを取り出したい時とか
case Some(x::_) => x とか
型がネストしてて色々複雑な時も便利 漏れがあったら教えてくれるしね
0906デフォルトの名無しさん2015/04/04(土) 15:54:56.78ID:4YoGdZdr
>>903が言ってるようにhaskellはmatch case文の糖衣構文がいっぱいあるから
haskellの方がより便利なんだけどね 関数定義に使えるし
length::[a] -> Int
length (x:[]) = 1
length (x:xs) = 1 + length xs
0907デフォルトの名無しさん2015/04/04(土) 21:07:05.22ID:ywxAt/r6
scalaのパターンマッチの構文はあまり宣言的に見えないんだよな
だからswitchなんかと比較される
>>906の書き方を見てパターンマッチの必要性に疑問を持つ奴はまず居ないだろう
0908デフォルトの名無しさん2015/04/05(日) 13:16:06.74ID:wS40qHnn
C言語はint型しかできないし…
0909デフォルトの名無しさん2015/04/06(月) 20:30:08.01ID:c5T4yf9N
なぜ >>906 が length [] = 0 ではなく length (x:[]) にしたのかすごく気になります。。。
0910デフォルトの名無しさん2015/04/06(月) 22:11:07.70ID:PHNT/LKP
気にするな
0911デフォルトの名無しさん2015/04/06(月) 23:36:07.48ID:PTrbisMT
空リスト渡すとランタイムエラーになるのに気にするなとは
0912デフォルトの名無しさん2015/04/07(火) 07:51:20.71ID:88agLMVk
パターン漏れは警告してくれるさ(適当)
0913デフォルトの名無しさん2015/04/12(日) 17:36:09.87ID:tg8JkgZr
良書が出たぞ

『関数型プログラミングに目覚めた! IQ145の女子高校生の先輩から受けた特訓5日間』
http://www.amazon.co.jp/dp/4798043761/
0914デフォルトの名無しさん2015/04/12(日) 17:38:49.32ID:p4Jwsjql
著者が面白い人らしいからレビュー待ちしてる
0915デフォルトの名無しさん2015/04/12(日) 18:16:38.56ID:l7+WDhp1
買ったら「私はIQ145以下です」ってことか…
0916デフォルトの名無しさん2015/04/12(日) 18:25:53.23ID:O3Q2YdhU
ヲチするのは構わんが報告は尼でたのむ
0917デフォルトの名無しさん2015/04/14(火) 21:45:52.19ID:yIb32Kq6
scala に MLやcaml,F#のレコードデータ型ないの?

まじでつかえないんだけど。
0918デフォルトの名無しさん2015/04/14(火) 21:57:18.21ID:JXEfmGV9
Scalaは関数型言語としては欠陥品だよ
JavaやOOPと折り合いを付けながら我慢しながら使う言語
0919デフォルトの名無しさん2015/04/15(水) 12:19:06.64ID:h7vwUYJQ
>>913
語るタイプのおかしい人って怖いな
0920デフォルトの名無しさん2015/04/17(金) 01:19:25.74ID:vdyCdK78
scalaってoopと関数型をサポートしている言語というより
oopで関数型をエミュレートした言語だよな
0921デフォルトの名無しさん2015/04/17(金) 07:51:36.88ID:vRmsAur5
それはF#も同じだけどな
あっちは関数型言語らしい記述スタイルも含めてエミュレートしてるが、
ScalaはRuby系ということもあって宣言的記述というより実行時の動作を記述してる感が強くなってしまってる
0922デフォルトの名無しさん2015/04/17(金) 21:04:54.97ID:35fKK/dZ
今play+scala勉強してるけどviewでセッションに保存した値ってどうやって取得するの?
0923デフォルトの名無しさん2015/04/18(土) 09:03:13.12ID:MinpvDPo
セッションノマド
0924デフォルトの名無しさん2015/04/18(土) 09:25:50.10ID:uMJyytWS
>>920
俺もそう思う。主軸はあくまでもOOPLであって、それで、対になる関数型言語の
機能をうまく当てはめた(たとえば、代数的データ型はケースクラスとパターンマッチング
と継承階層を使ってエミュレート)感じ。というか、言語仕様的にはまぎれもない
OOPLなんだけどな。
0925デフォルトの名無しさん2015/04/18(土) 09:26:44.58ID:uMJyytWS
>>917
より高機能なクラスあるじゃん。なんでより低機能のレコードデータ型欲しがるのか。
0926デフォルトの名無しさん2015/04/18(土) 09:43:16.03ID:pSroTT2+
関数型で扱うデータには機能なんか要らないので、
簡潔な構文で扱える方がいいんだよ
case classで代用できるけど、あんまり好きじゃないな
使う側に構文糖衣を入れればいいのに、case classはクラスの側に色々ブチ込んで
fatなクラスが出来上がるのが気持ち悪いわ
0927デフォルトの名無しさん2015/04/18(土) 11:49:06.45ID:HNhAw2cF
Scalaって今後Web系の開発で広く普及しそう?
0928デフォルトの名無しさん2015/04/18(土) 11:58:25.05ID:pSroTT2+
Scalaが必要になるようだとWeb系の開発といってもある程度大規模なものになるわけで、
そうするとどうしても俺逹最先端イェーイみたいなノリだけじゃなくて
技術的な信頼性とか将来性とか人員調達とかお堅い事情も重要になってくるからなあ
エンタープライズが付いてこないと厳しいんじゃないかな
0929デフォルトの名無しさん2015/04/19(日) 13:03:39.63ID:VLNa/8kx
高い応答性を期待する分野だと小人数でもscalaを使ってたりする

ただどっちにしても言語とかフレームワークだけで選ばれるような言語じゃないだろうから
広く普及というより特定の分野で使われるという事になるだろうと思う(リクエスト数が凄かったり、高い応答性を期待されるような分野だったり 広告とか)

言語だけなら他の関数型の方がいい(scalaは型関連がたまに残念だったり 複雑すぎたりする)
webでの生産性だけみるならrubyみたいなスクリプトの方がいいだろうし
0930デフォルトの名無しさん2015/04/20(月) 16:53:45.15ID:uUU7Dt+D
>>925 レコードの構造的ぶぶん型を使いたい、レコードのあるラベル含んでなくても、必要なラベルさえふくんでいたらある関数に渡せるような感じ。
0931デフォルトの名無しさん2015/04/24(金) 07:02:10.01ID:9Pkdsp+w
>>930
ScalaのStructual Subtypingではダメなの?
確かに多用しすぎるとパフォーマンスに影響が出てくるけど、
Java系で言うならGroovyなんかはほぼ全てリフレクションでやってるんだし。
0932デフォルトの名無しさん2015/05/12(火) 19:18:49.69ID:NdDThxH5
いつの間にやらSlick 3.0.0
http://slick.typesafe.com/news/2015/04/29/slick-3.0.0-released.html
0933デフォルトの名無しさん2015/05/12(火) 19:22:18.01ID:6ymeF2F5
Slick正直苦痛だわ
もう全部SQL直書きでいいから行とオブジェクトの間の代入だけ自動でやってくれるのないかな
09349332015/05/12(火) 19:32:06.69ID:6ymeF2F5
https://github.com/StackExchange/dapper-dot-net
こういうやつね
もう自分で移植しようかな…
0935デフォルトの名無しさん2015/05/12(火) 19:49:39.59ID:ZHOslJuR
3.0は知らんけど、Slickは筋が悪い気がするので使いたくない。
0936デフォルトの名無しさん2015/05/13(水) 21:19:44.51ID:Gq38kIX8
>>933
ScalikeJDBCじゃダメなの?
0937デフォルトの名無しさん2015/05/17(日) 10:15:54.13ID:MUnfOjBK
Scalaって型安全が目的化しておかしくなってる部分が多いよね
静的型でメタプログラミングは諦めてC#みたいにメタな操作は全部実行時と割り切るのが現実的
0938デフォルトの名無しさん2015/05/17(日) 18:30:38.56ID:IG3z4SBY
型安全が完璧だと自動化が楽になる
それだけでも有用性が大きい
0939デフォルトの名無しさん2015/05/18(月) 21:43:41.28ID:Za9DOvVn
>>933
sql直接投げられなかったっけ?
0940デフォルトの名無しさん2015/05/23(土) 07:50:17.02ID:SgbjeX2J
DBの1行に対応する型としてcase classを使ってるんだけど、
・DBに保存されていない(IDとタイムスタンプが付与されていない)
・DBに保存されている(IDとタイムスタンプが付与されている)
の区別を型で表現するにはどうするのがスマート?
0941デフォルトの名無しさん2015/05/23(土) 14:51:25.75ID:wCdzmxCi
IDとタイムスタンプを持つtraitを使うとか
0942デフォルトの名無しさん2015/05/24(日) 09:39:32.27ID:zPEDRqiY
>>940
直和型?
trait Saved {idとか}
sealed trait ModelA
case class SavedModelA() extendds ModelA with Saved
case class UnsavedModelA() extends ModelA
09439402015/05/24(日) 09:58:14.00ID:uVZ1+wHE
>>941-942
確かにtraitを使うのが自然だとは思うんだけど、
それだとcase classのフィールドの宣言が重複するし、
UnsavedModelからSavedModelを作るとき手で全部移さないといけないのが嫌じゃない?
ModelADataみたいな case class でまとめてもいいけど、一つの型にまとめられないなら単に
case class Saved[T](id: Int, data: T)
でいい気がする
09449402015/05/24(日) 10:03:02.43ID:uVZ1+wHE
補足
>>943の”一つの型にまとめられないなら”というのは
各フィールドの宣言が複数の型に分散してもいいなら、という意味です
0945デフォルトの名無しさん2015/05/25(月) 13:59:19.70ID:lm90egiZ
>>940
anorm.Pk は?
0946デフォルトの名無しさん2015/05/25(月) 16:23:13.15ID:zn2Fs3VY
anorm.Pk使うくらいならOptionでいいでしょ
わざわざ変な依存性を持ち込む必要はないよ
実際そういう理由でdeprecatedになってるし
0947デフォルトの名無しさん2015/06/08(月) 18:29:37.98ID:fPO/HoGA
>>915
お前IQ145もあるの?
0948デフォルトの名無しさん2015/06/08(月) 21:32:12.46ID:FQv4Gom7
IQ180以下は書き込み禁止の方向で
0949デフォルトの名無しさん2015/06/08(月) 21:33:49.99ID:Wd1nyyc/
ScalaはJavaより速い?
0950デフォルトの名無しさん2015/06/08(月) 21:42:48.43ID:FQv4Gom7
プログラマの教育期間まで含めれば、まだJavaの方が速いでしょうね
Scalaは仕様を減らすべきだった
0951デフォルトの名無しさん2015/06/09(火) 00:40:40.49ID:gOy2U9+2
別にscalazとか使わなくてもいいんやで
0952デフォルトの名無しさん2015/07/10(金) 22:43:51.11ID:coMDr/sM
環境はwindowsです
パイプ処理を自動化して行いたいので
scalaのコンパイルと実行をコマンドプロンプト経由でやろうとしてるんですが
やり方がよく分かりません。↓のようなことをsaclaでやるには
どうしたらいいでしょうか?

C# で gcc のようにファイルを指定してビルドする方法
http://yohshiy.blog.fc2.com/blog-entry-208.html
09539522015/07/10(金) 22:45:31.09ID:coMDr/sM
開発自体はeclipseでやってます
0954デフォルトの名無しさん2015/07/10(金) 22:54:11.94ID:mg6PwCme
今すぐScalaアンインストールしてTypesafe Activatorで出直せ
0955デフォルトの名無しさん2015/07/10(金) 22:54:36.70ID:coMDr/sM
>>952-953
ググりしなおしたらscalacの存在を知りました
これでやってみます
0956デフォルトの名無しさん2015/07/10(金) 23:14:28.90ID:cV8tXdlJ
つまりどういうこと?
0957デフォルトの名無しさん2015/07/18(土) 19:41:20.14ID:A+X8599K
コンパイラーの使い方学ぶより先にIDE使い始めるのって本当に弊害しかないんだな。。。
0958デフォルトの名無しさん2015/07/20(月) 13:49:43.03ID:6wDw3Bgn
今から静的型付な関数型言語勉強するなら
scalaとf#とhaskellならどれおすすめ?

学べる事、出来る事ははほとんど同じなんだろうけど、
それぞれデメリットが気になって選べないんだよなあ。
scala(コンパイル遅すぎ、javaに密着らしい?)
f#(vs覚えなきゃ、この中では情報少なめ)
haskell(io周りに縛り?が多すぎてやりたい事やるまでが大変だった)

ruby使いの趣味グラマーだからいろいろこだわらないで、
手続き型でも書けるscalaでいい…よね?
0959デフォルトの名無しさん2015/07/20(月) 16:34:55.26ID:WnNA5LDR
勉強目的ならHaskell
0960デフォルトの名無しさん2015/07/20(月) 17:59:30.85ID:jyLRfwQm
scalaもf#もhaskellも3つともインストールして使ってみればいい
0961デフォルトの名無しさん2015/07/20(月) 18:12:35.20ID:o7i58OTB
Javaエコシステム知ってるならScala、.netエコシステム知ってるならF#、Unixエコシステム知ってるならHaskell、どれも馴染みないなら好きに
0962デフォルトの名無しさん2015/07/20(月) 18:19:04.57ID:6pYE0LpF
scalaのコンパイルが遅い事に関しては、
GroovyServを使ったscalacで劇的に早くなるって事を
どこかで見たよ
0963デフォルトの名無しさん2015/07/20(月) 18:22:08.31ID:klm+d0ji
言語として一番実用性と関数型らしさのバランスがいいのはF#だね
Haskellは競技プログラミングなど極めて小さい問題領域の問題を最短で解くのには向いてる
ScalaはJava前提で、言語そのものには特に見るべきところはない
0964デフォルトの名無しさん2015/07/20(月) 18:27:12.45ID:8QocQRHr
androidアプリ作りたいからJavaを覚えようかと思ってるけど迷ってる
でもGoogleがOracleとの件でJavaを切るんだったらJavaを覚える必要がなくなっちゃう
そうするとどこでJavaを使えばいいのかわからなくなる
WEBサイトとかはPHPとGoがあれば間に合うしJavaが使えるクラウドってあんまりないし
haskellは関数型言語を1つは覚えたいと思ってるので競プロ用で使いたいから覚えてる
0965デフォルトの名無しさん2015/07/20(月) 19:37:19.02ID:CQ27gtAR
競プロ用ならc++が一番じゃね?
プロコンにhaskell向いてるかな プロコンって手続き型の言語が向いている気がする(メモリ使用量と計算量が予想しやすい)
俺が無知なだけか知らないけど

言語としてのjavaはどうでもいいが ともかくjvm言語を一つ以上知っておいたほうがいいと思う
0966デフォルトの名無しさん2015/07/20(月) 20:06:14.59ID:0TG+/+/W
どうせ趣味でやるなら普段使ってるのと違うのを使えばいいかと
それを考えるとC系の残る Scala よりはML系のF#かHaskellでいいのでは
0967デフォルトの名無しさん2015/07/20(月) 20:32:59.78ID:n95qMHkT
>>966
趣味だから実用性皆無で良いというのは違うと思うなあ。
0968デフォルトの名無しさん2015/07/20(月) 21:08:06.11ID:AKjrtHkO
ScalaのメリットはJavaライブラリがそのまま使えることだね
これは何気にデカい
0969デフォルトの名無しさん2015/07/20(月) 22:00:16.45ID:R5wOe01Z
もっとメインストリームに躍り出ないのかな。自由度が高すぎるか
0970デフォルトの名無しさん2015/07/20(月) 22:04:54.55ID:SaCGDbjT
データ解析など特定分野でなら可能性はあるが、
Sparkはすごく微妙だった
やっぱりJava系言語はスクリプティングに向いてないわ
0971デフォルトの名無しさん2015/07/20(月) 22:23:07.99ID:h53zSEfc
趣味ならRustやってみればいいじゃん
ライブラリがほとんどない&エクスペリメンタルな機能が多いのが致命的だけど速いし良い言語だから将来性がある。
あとScalaがJavaベッタリなんてことはない。Scalaが出てきてから随分経ってるからスタンドアロンなライブラリも結構ある。
0972デフォルトの名無しさん2015/07/22(水) 07:36:36.59ID:pzWUtjfr
RustはGoに似た雰囲気で、どちらかというとシステム寄りな言語だから
そういう目的がないのであればちょっと低レベルに感じるかもしれないね
0973デフォルトの名無しさん2015/07/22(水) 17:47:21.78ID:U3gJc9Cs
>>972
最近リリースされたscalaのラムダが、Java8のラムダと同じバイトコードになるようになったらしいんだけど、高速化される?
0974デフォルトの名無しさん2015/07/22(水) 17:47:49.61ID:U3gJc9Cs
ごめんアンカーミス
0975デフォルトの名無しさん2015/07/23(木) 14:37:06.19ID:5z9kTQIC
rustはどちらかというとというより
明らかにシステムよりの言語
goと違ってGCないし(参照カウント方式のポインタはまぁあるけど)
メモリ安全なML風C言語みたいな?
0976デフォルトの名無しさん2015/07/23(木) 19:18:52.79ID:2Zk51aV8
>>975
RustにGCがないのは特別な理由があるかららしいよ。
GC自体はgolangにもあるし、システム言語かどうかはGCの有無に関係ない気がする。
0977デフォルトの名無しさん2015/07/24(金) 08:39:35.16ID:sUR4TL+C
>>976
GCがないのはrustがc/c++後継狙ってて
osやら組み込みやらも書ける事を狙ってるからじゃないの(ブラウザを書き直してるらしい)
メモリは直接触れるけど安全ですよ(unsafeとか除けば)みたいな
0978デフォルトの名無しさん2015/07/24(金) 12:49:27.36ID:hDTLirAT
>>977
いやRustはブラウザを書くためにFirefoxの中の人が作り始めた言語で、GCがないのはブラウザがカクつかないようにするためらしい。
てか現実的に考えて関数型な時点でcやc++みたいなデファクトなシステム言語にはなれないと思うな。
まぁscalaスレだからこれくらいにしとく
0979デフォルトの名無しさん2015/07/24(金) 16:32:42.17ID:sUR4TL+C
そうかブラウザが主目的か(´・ω・`)
0980デフォルトの名無しさん2015/08/01(土) 03:06:18.49ID:aSYHV23c
=>

↑ってなんて読むの?
0981デフォルトの名無しさん2015/08/01(土) 16:32:07.75ID:DY0kRX1l
arrow…かな
0982デフォルトの名無しさん2015/08/01(土) 16:36:58.19ID:c0YSrVc+
then
0983デフォルトの名無しさん2015/08/01(土) 16:38:48.01ID:RZc3oG0T
介
0984デフォルトの名無しさん2015/08/02(日) 01:34:56.57ID:pPqLz3oQ
double arrow
レス数が950を超えています。1000を超えると書き込みができなくなります。