並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 47件

新着順 人気順

scala3の検索結果1 - 40 件 / 47件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

scala3に関するエントリは47件あります。 scalaプログラミングScala などが関連タグです。 人気エントリには 『あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記』などがあります。
  • あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記

    この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. たぶん見習おうとすると処理系を作り直す羽目になりますが. この記事ではScala 3のマクロのすごいところを例を使って紹介します. マクロの実践的な例 準備 実践的な例: NamedArray – 名前でアクセスできる配列 NamedArrayのマクロ実装 記述が明瞭 メタレベルのプログラムの扱い クォートとスプライスがある パターンマッチもある 生成コードに型がつく 多段階計算に基づいている クォートとスプライスの本当の意味 ネストしたスプライス ネ

      あらゆるプログラミング言語の最先端を行くScala 3のマクロ - 貳佰伍拾陸夜日記
    • Scala3と圏論とプログラミング

      最近、圏論とプログラミングという素晴らしい資料を拝読しました。圏論とプログラミング愛に溢れる資料で読んでいて目頭が熱くなりました。そうだよな・・・プログラマにも圏論いるよな・・・ ただ、自分にとって残念だったのは、資料で説明用に選択されたプログラミング言語が「Haskell」だったことです。もちろんHaskellは素晴らしい言語です。ただ、自分にとってHaskellは外国語なのでちょっと理解が難しいのです。そしてこの資料が「Scala」で書かれていたらと夢想せずにはいられなかったのです。 Scalaと言えば昨年末にScala3のリサーチコンパイラのDottyがFeature Completeを宣言しました^1。この宣言で新機能の追加は終了して、あとは2020年末のリリースに向けてひたすら品質を上げていく段階に突入しました。つまり、ようやく次世代のScalaが全貌を現したということです。 こ

        Scala3と圏論とプログラミング
      • Scala3でコードは爆速になる マルチステージプログラミングの考え方

        アジア最大級の国際Scalaカンファレンスである「ScalaMatsuri2020」がオンラインで開催されました。そこでビジョナル・インキュベーションの鈴木氏が、Scala3(Dotty)で可能になったマルチステージプログラミング(MSP:Multi-stage Programming)について話しました。前半ではマルチステージプログラミングの概念やその基本的なプログラムの書き方について話しました。 マルチステージプログラミングのいいところ 鈴木健一氏(以下、鈴木):鈴木健一と申します。よろしくお願いします。本日はマルチステージプログラミングの話をします。 Dotty(※Scala3)でメタプログラミングの機能が強化されてマルチステージプログラミングができるようになったので、せっかくなのでそのお話をしまして、後半はTagless-finalのご紹介をします。最後にマルチステージプログラミン

          Scala3でコードは爆速になる マルチステージプログラミングの考え方
        • なぜ Scala 3 で変わったのか / Why things are changed in Scala3?

          Scala 3で変わった機能の背景事情と、現段階でわかっているマイグレーションの話中心です。 2020/1/31 (株)セプテーニ・オリジナル 社内勉強会 資料

            なぜ Scala 3 で変わったのか / Why things are changed in Scala3?
          • Scala 3 is here!🎉🎉🎉

            After 8 years of work, 28,000 commits, 7,400 pull requests, 4,100 closed issues – Scala 3 is finally out. Since the first commit on December 6th 2012, more than a hundred people have contributed to the project. Today, Scala 3 incorporates the latest research in type theory as well as the industry experience of Scala 2. We’ve seen what worked well (or not so well) for the community in Scala 2. Base

              Scala 3 is here!🎉🎉🎉
            • コンパイル時計算でラムダ計算の構文解析器・評価器・型推論器を実現 (Scala 3編) - 貳佰伍拾陸夜日記

              またか. またなのか. 何回目だ. ということで, ラムダ計算のインタプリタの実装としては4回目くらい*1, コンパイル時計算でやるものとしても3回目くらいになってしまうけど, ラムダ計算の処理系をまた書いてしまった. 今回の目的は, Scala 3にはmatch typesという機能があり, これだけでチューリング完全なのではないか, というのを検証するため. また, 文字列リテラル型を操作する型レベル関数が3.1.2-RC1にきていて, これを使えば構文解析器だって書ける. 経緯 過去の事例 関数と返り値 パターンマッチと再帰呼出し Scala 3の型レベル言語 match types リテラル型操作 ラムダ計算の実装 評価 印字 構文解析 型推論 (型検査) おわりに 経緯 もともとは, id:xuweiさんが文字列リテラル型でコンパイル時に動作する構文解析器を実装していたのが始まり

                コンパイル時計算でラムダ計算の構文解析器・評価器・型推論器を実現 (Scala 3編) - 貳佰伍拾陸夜日記
              • Scala 3 マクロ入門 · eed3si9n

                2021-09-06 / scala はじめに マクロは楽しくかつ強力なツールだが、使いすぎは害もある。責任を持って適度にマクロを楽しんでほしい。 マクロとは何だろうか? よくある説明はマクロはコードを入力として受け取り、コードを出力するプログラムだとされる。それ自体は正しいが、map {...} のような高階関数や名前渡しパラメータのように一見コードのブロックを渡して回っている機能に親しんでいる Scala プログラマには「コードを入力として受け取る」の意味が一見分かりづらいかもしれない。 以下は、僕が Scala 3 にも移植した Expecty という assersion マクロの用例だ: scala> import com.eed3si9n.expecty.Expecty.assert import com.eed3si9n.expecty.Expecty.assert scala

                • Scala 3のマクロTips 100連発 - 貳佰伍拾陸夜日記

                  この記事はScala Advent Calendar 2023の12日目だ! Scala 3のマクロを書く上で役に立つ, メタれたTipsたちを紹介するぜ! 勢いに任せて書いていくからサンプルコードがちゃんと動かなかったらごめんな. 一応, Scala 3.3.1を想定しているぞ. マクロ 1. メソッドをマクロとして定義する 2. マクロの本体を実装する 3. マクロ実装の記法の意味を知る 4. マクロで生成されるコードの内容を確認する 5. 引数の式を評価せずに使う 6. 返り値の型をマクロの実行結果によって決める 7. マクロの返り値の型を制限する 8. マクロの返り値の型を書かない 9. マクロで計算された型をテストする 10. マクロで計算された型をScalaTestでテストする 式 11. 定数式の値を得る 12. 定数式でなければコンパイルエラーにする 13. 定数値の式を作

                    Scala 3のマクロTips 100連発 - 貳佰伍拾陸夜日記
                  • Scala 3のmatch typeで数独チェッカーを作った - xuwei-k's blog

                    なんかtweet流れてきたので TypeScriptの型がどれほど強力かというと、コードエディタ上で直接数独ができるほどの複雑な型を作成した方がいるほどです。このSudoku型を使用すると、TypeScriptの型チェッカーが間違いを正確に指摘してくれます。 pic.twitter.com/mCXXjGqK9D— Jeffry Alvarado (@jalva_dev) September 7, 2024 github.com Scala 3のmatch type自体の詳細な説明は省略しますが、compile時計算的なことができて、チューリング完全です https://tarao.hatenablog.com/entry/lambda-scala3 あくまで答えがvalidか?のcheckerだけで、プレースホルダー部分実装してない それも実装しました。下記に貼った 少なくともIntell

                      Scala 3のmatch typeで数独チェッカーを作った - xuwei-k's blog
                    • Scala3の開発体験がScala2時代に比べてめちゃくちゃ良くなっていた話 - Qiita

                      ドワンゴのN予備校という教育サービスでプログラミング講師をしている @sifue といいます。N高等学校/S高等学校のプログラミング講師もしており、学内のツール開発や運用などもしたりしています。 最近は生成AIが流行ったこともあって、Pythonだったり、UIが必要なものはどうしてもTypeScriptとReactで実装することも多いのですが、久しぶりにScalaを使っての開発をしてみました。 自身は、Scalaでの開発はニコニコ生放送のサービスを開発するときに使っていた他、N予備校内で提供している大規模Webアプリの教材やドワンゴが当初作成していたScalaテキストの作成などにも関わらせてもらいました。 その当時のScalaは2.12であったわけなのですが、その後2.13が出て、さらに今はScala3系になって3.3.1までバージョンが進み、開発環境が変わってすごく使い勝手がよくなったと

                        Scala3の開発体験がScala2時代に比べてめちゃくちゃ良くなっていた話 - Qiita
                      • Scala 3でデータ指向プログラミングは可能か - かとじゅんの技術日誌

                        Scala 3におけるデータ指向プログラミング(以下DOP)について深掘りする。久々にScalaの話題を取り上げるが、これはScala Advent Calendar 2023の14日目の内容でもある。 早速だけど、DOPの基本原則は意外とシンプルだ。 コード(動作)をデータから切り離す データを汎用的なデータ構造で表現する データをイミュータブル(不変)として扱う データスキーマをデータ表現から切り離す イミュータブルなデータは採用することは多いと思うが、これをそのまま実践している人はどのくらいいるだろうか。Scalaではクラス中心の関数型プログラミングが主流だと思うし、私もそうしている。 DOPの詳細は下記の本(以下DOP本)を参照してほしい。 データ指向プログラミング 作者:Yehonathan Sharvit翔泳社Amazon ちなみに留意すべき点がある。DOP本とJavaのPro

                          Scala 3でデータ指向プログラミングは可能か - かとじゅんの技術日誌
                        • ハマったポイントたくさんあったけどPlay3.0/Scala3.3へバージョンアップできたよ - エムスリーテックブログ

                          こんにちは。エムスリーエンジニアリンググループでScalaとマミさんが好きな安江です。今回は私が所属している製薬企業向けプラットフォームチームのPlay製プロダクトのPlay/Scalaバージョンアップのお話です。当初Play2.8にバージョンアップしていたのですが、その最中にPlay2.9/Play3.0やScala LTSが出たりもしました。最終的にPlay3.0/Scala3.3にバージョンアップできて本番稼働できたサービスもあるので、そのバージョンアップの経緯をご紹介します。 Play2.8への道のり Play3.0へのバージョンアップ ハマり1:依存ライブラリがPlay2系に依存している ハマり2:ScalikeJDBCの依存関係 ハマり3:サーバーバックエンドの変更 ハマり4:sttpのバックエンドの変更 ハマり5:if式が値を返さない まとめ We are hiring !!

                            ハマったポイントたくさんあったけどPlay3.0/Scala3.3へバージョンアップできたよ - エムスリーテックブログ
                          • Scala 3.3.0から標準で使えるようになるfewerBraces記法のまとめ - Lambdaカクテル

                            先日、Scala CLI v1.0.0がついにリリースされた。これまではv0系列だったので、満を持しての正式版リリースだ。おめでとう! github.com いちおう説明しておくとScala CLIは総合的なScalaのコマンドラインツールで、以下のようなことができる: Uber JAR(単体で動作するJARファイル)の生成 GraalVMを使ったバイナリの生成 Scala Nativeを使ったバイナリの生成 REPL Scala Scriptの実行環境 このように多彩な機能を持つScala CLIは、現在のscalaコマンドを置換して将来的なscalaコマンドになることが決まっている。 さて、リリースノートによればScala CLIではv1.0.0からScala 3.3.0をデフォルトで利用することになった。Scala 3.3.0にはいくつもの修正や追加機能が含まれているが、今回はその中

                              Scala 3.3.0から標準で使えるようになるfewerBraces記法のまとめ - Lambdaカクテル
                            • Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる - Lambdaカクテル

                              Tagged Type というテクニックがある(TypeScript界隈などではBranded Typeと呼ばれているようだ)。実行時の型としては同じだが、型システム上はこれを区別して別物として扱い、混同できなくする仕組みを作るためのものだ。 AIくん!サムネイラスト作って!と頼んで作ってもらった画像 Tagged Type 単位の取り違えによる事故は後を絶たない。世の中には、キログラムとポンドを混同して飛行機があわや墜落しかけたり、メートルとヤードを混同して人工衛星がどっかに行ったりしている。尊い人命や国民の血税と比べるといささか霞むかもしれないが、ユーザIDとペイロードを間違えて送信したり、金額と口座番号を取り違えて送金したり、秘密鍵と公開鍵を間違えて表示したりしてしまえば、プログラマが大変な苦労をするか、会社そのものが傾くだろう。 しかしながら、データとしてはどちらも同じDouble

                                Tagged Type(Branded Type)を使って飛行機の不時着や人工衛星紛失を防ごう / Scala 3ではTagged Typeを簡単に作れる - Lambdaカクテル
                              • Scala 3に備える社内勉強会の取り組みについて - kubell Creator's Note

                                みなさん、こんにちは!Chatworkの原田 (@shinharad) です。 今回は、最近弊社で取り組んでいる Scala 3 の社内勉強会について、このような流れでご紹介したいと思います。 最初に Scala 3 の今の状況をざっと確認 Chatworkでは Scala 3 の社内勉強会を継続的に開催している 勉強会で使っている資料、情報源のご紹介 勉強会でやったことをいくつかご紹介 Scala 3 の状況 まずは、Scala 3 の今の状況について軽く確認しておきましょう。 待ちに待った Scala 3 は、この記事を執筆している時点での最新版が Scala 3.0.0-RC3 で、大きな問題がなければこの5月中にも安定版がリリースされる予定です。 Scala 3 は、Scala 2 で不便だった機能や、煩雑で分かりづらかった機能が大幅に見直されました。 具体的には、代数的データ型(

                                  Scala 3に備える社内勉強会の取り組みについて - kubell Creator's Note
                                • record4s --- Extensible Records for Scala 3, and Domain Modeling with Structural Types

                                  In this talk, we learn about the basics of my library called "record4s", which provides type-safe extensible records for Scala 3. It runs on JVM, JS, an…

                                    record4s --- Extensible Records for Scala 3, and Domain Modeling with Structural Types
                                  • Scala 2 Roadmap Update: the Road to Scala 3

                                    Wednesday 18 December 2019 Lukas Rytz, Adriaan Moors, Martin Odersky Together with the Scala 3 team at EPFL (aka the Dotty team), led by Martin Odersky, we have decided that, rather than developing Scala 2.14, our efforts should go to Scala 3 instead. While we’re very excited to shift our focus to Scala 3, we will continue to maintain Scala 2.13 to ensure the community has ample time to carefully

                                      Scala 2 Roadmap Update: the Road to Scala 3
                                    • 2020年11月現在のScala 3(Dotty)とScala 2のコンパイル速度比較 - xuwei-k's blog

                                      最初に結論 Scala 2.13.3 と 3.0.0-M2-bin-20201031-1ab76c1-NIGHTLY をscalaz最新版でベンチマークしたところ、 Scala 2.13.3は平均約57秒、Scala 3の最新版は平均約31秒で 約45%短縮!!! めでたいなぁ。 他の条件で計測した場合にどうなるのかわからないが、このままの速度を維持して欲しい。 以下詳細な条件や結果記載。 条件 scalazの最新版masterで、JVM側のmain側のみ(つまりtest除く。除いたのは、test含めると、よりコード量に差が出てしまうなどの理由) (数時間前に7.4.0-M4リリースしたので、実質それ) ベンチマークのために.travis.ymlだけ改変 https://github.com/xuwei-k/scalaz/commit/5956af9d2b280ef05b42eac9241

                                        2020年11月現在のScala 3(Dotty)とScala 2のコンパイル速度比較 - xuwei-k's blog
                                      • Scala3と圏論とプログラミング - Qiita

                                        最近、圏論とプログラミングという素晴らしい資料を拝読しました。圏論とプログラミング愛に溢れる資料で読んでいて目頭が熱くなりました。そうだよな・・・プログラマにも圏論いるよな・・・ ただ、自分にとって残念だったのは、資料で説明用に選択されたプログラミング言語が「Haskell」だったことです。もちろんHaskellは素晴らしい言語です。ただ、自分にとってHaskellは外国語なのでちょっと理解が難しいのです。なのでこの資料が「Scala」で書かれていたらと夢想せずにはいられなかったのです。 Scalaと言えば昨年末にScala3のリサーチコンパイラのDottyがFeature Completeを宣言しました1。この宣言で新機能の追加は終了して、あとは2020年末のリリースに向けてひたすら品質を上げていく段階に突入しました。つまり、ようやく次世代のScalaが全貌を現したということです。 ここ

                                          Scala3と圏論とプログラミング - Qiita
                                        • Scala 3のmatch typeでcompile timeにString literalをparseして評価する - xuwei-k's blog

                                          Scala 3のmatch typeで何かのparserでも書くか?と思ったけど、コンパイル時にリテラルのStringを、型情報というか分解した場合の値情報?を、保ったままの分解が単純には出来そうにはないというか… あるいは一旦CharのHListにしたいんだけど、何か方法あるのかな— Kenji Yoshida (@xuwei_k) February 28, 2021 https://t.co/sNupBRy3rV type Substringが増えてるからいける…?— Kenji Yoshida (@xuwei_k) 2022年2月28日 できました。 parserなどに慣れてないので、とりあえず以下のクソ雑仕様?だけど、tokenにするのとparseとevalをなんとなくちゃんと分けたぞ! みんなScala 3のmatch typeで、任意の言語などのparserや評価機を書こう!!

                                            Scala 3のmatch typeでcompile timeにString literalをparseして評価する - xuwei-k's blog
                                          • やさしい Scala ~Json ライブラリ の実装をなぞりながら Scala 3 と関数型プログラミングの初歩を学ぶ~

                                            既存のOSSの実装をなぞりながら簡単な Json パーサーを作る過程で、Scala 3 で追加/変更された文法・機能と関数型プログラミングを学べるように書いた本です. この本を読むと - Scala 3 の文法・追加/変更された機能がわかります - Scala の関数型 Json ライブラリのお気持ちがわかります - Scala の関数型のお気持ちがチョットわかります - Scala 3 のマクロがわかります 最初から順番にじっくり読むよりは全体を斜め読みして気になったところをしっかり読むといいかもしれません. - Maven へのリリース方法を追加: 2021/11/11 - Tweak: 2022/05/03

                                              やさしい Scala ~Json ライブラリ の実装をなぞりながら Scala 3 と関数型プログラミングの初歩を学ぶ~
                                            • Scala 3への道

                                              原文(投稿日:2021/03/03)へのリンク Scala 3には多くの変更が組み込まれており、Dottyに基づいている。新しいコンパイラは、Document Object Types (DOT) の内部データ構造を使用する。そのコードベースは現在の nsc コンパイラのほぼ半分のサイズであり、パフォーマンスの向上が約束されている。過去8年間の開発において、新しい型を含むDottyの新機能は、改善された enum 型の処理とメタプログラミングが含まれる。最初のリリース候補が利用可能になり、バージョン 3.0.0は2021年の初めから中頃にリリースされる予定だ。Scala 3は、Scala 2.13の下位バイナリ互換バージョンだ。 Webサイトに記載されているように、Scala 3の開発は3つの主要な目標に焦点を合わせている: Scalaの基盤を強化します。完全なプログラミング言語をDOT計

                                                Scala 3への道
                                              • 業務アプリケーションのScala 3アップデートを試してみた(前編) - FLINTERS Engineer's Blog

                                                こんにちは。FLINTERSでTech Adviserをしています、OE(@OE_uia)です。 Scala 3.0.0が2021年5月14日にリリースされたことを受けて、いつアップデートするか検討中の方も多いかと思います。 実際、今FLINTERSではScala製プロダクトのScala 3.0.0へのバージョンアップを試みており、今回はその進捗をブログ記事化しました。 TL;DR Play Frameworkやplay-jsonを利用したプロジェクトでも、一部はScala 3.0.0にアップデート出来ることを確認しました。 Scala 3化を完遂するにはやや時期尚早な感があるものの、今回試してみてScala 2.13とScala 3の互換性に関する知見がたまり、OSSへの貢献もできました。 scala3-migrate-pluginで依存しているライブラリのScala 3対応状況について

                                                  業務アプリケーションのScala 3アップデートを試してみた(前編) - FLINTERS Engineer's Blog
                                                • Scala 3 - A community powered release

                                                  Scala 3 - A community powered release After 8 years of research, experimenting, trying out, discussing, numerous contributions from academic & community collaborators, the Dotty project will finally graduate in fall 2020, by becoming Scala 3. This blog aims to capture what it takes to coordinate the Scala 3 release efforts and to invite you to help us make it a success! Current situation? We are c

                                                    Scala 3 - A community powered release
                                                  • Scala 3は、開発者エクスペリエンスを向上させるために言語をオーバーホール

                                                    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

                                                      Scala 3は、開発者エクスペリエンスを向上させるために言語をオーバーホール
                                                    • 『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その1 - Magnolia Tech

                                                      昨年末から時間さえ有れば『Scala関数型デザイン&プログラミング』の演習問題の解き直し、というのを久しぶりに(3年ぶり?)をやっていました。 Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 作者:Paul Chiusano,Rúnar Bjarnason,株式会社クイープインプレスAmazon 過去に解いた時の記憶がだいぶ飛んでしまっていたので、久しぶりに解き直してみるか、と思ったものの、そのまま解いてもあまり面白くありません。そこで演習問題を都度Scala3ベースに置き換えながら解くことにしました。 なお、原著の『Functional Programming in Scala』は今年Scala3対応版の第2版が出版される予定で、GitHubのリポジトリにも既に第2版用のScala3対応版コードが用意されています(が、そちらを見てしまうと練

                                                        『Scala関数型デザイン&プログラミング』の演習問題をScala3で解く その1 - Magnolia Tech
                                                      • Scala3の新機能紹介 - Adwaysエンジニアブログ

                                                        こんにちは、おかむです。 開発開始から8年。28,000件のコミット、7400件のPR、4100件のClosed issue… 5/14に、とうとうScala3.0.0がリリースされました。 Scala3では、最新の型理論とScala2での経験が反映されています。 Easy to use, learn, and scale 移行や学習のためのドキュメント、Scala3の新しいマクロの解説など、各種ドキュメントの充実化も行われています。 今回はScala3の新しい要素について紹介していきます。 ちなみにすべては紹介しきれないので大きめの機能に絞っています。 新しい文法 New Control Syntax (新しい制御構文) Optional Braces (括弧の省略) 型システム Intersection Type (交差型) Union Type (共用体型) Type Lambda

                                                          Scala3の新機能紹介 - Adwaysエンジニアブログ
                                                        • Scala3でQuartoを実装してみた - Qiita

                                                          まえがき みなさん、Quartoをご存知ですか? 自分は先日、会社で教えてもらって初めて知りました。 4x4のフィールドにコマを置いて勝敗を争うボードゲームなのですが、シンプルながらなかなかに奥深くて面白かったので、コードで表現してみることにしました。 そして、せっかくイチから書くなら、Scala3を採用してその表現力を生かしたい、ということで、コードは全部Scala3です。 以下、Scala3の新機能の紹介を交えながら、コードを解説していきます。 コードのリポジトリはこちらです。 日々ちょっとずつ、色々なアイデアを試していますので、必ずしもこの記事での解説が最新のコードと一致していない場合もあることをご了承ください。 ScalaのバージョンはScala3.0.0-M3で書いています。 Optional Bracesについて Scala3の新しいシンタックスとしてOptional Brac

                                                            Scala3でQuartoを実装してみた - Qiita
                                                          • Scala 3.0.0-RC1 – first release candidate is here

                                                            Greetings from the Scala 3 team! We are delighted to announce the first release candidate of the stable version of Scala 3 – Scala 3.0.0-RC1. This release brings some last-minute polishings, clean-ups and changes before the big release. There were a few language changes to improve the user experience, as well as the polishings of the metaprogramming framework. We have also worked on the issues tha

                                                            • GSoC 2021 に参加して Scala3 の開発環境を改善させてもらった - たにしきんぐダム

                                                              2021/06 から参加していた Google Summer of Code 無事修了しました。 GSoC では Add synthetics and symbol information for semanticdb in Scala 3 という題目で Scala3 の IDE や Linter のための基盤となる機能の開発をしていました。 今回の成果により Scala3 でも Metals (Scala の Language Server 実装) で go-to-implementation, show-inferred-types, show-implicit-arguments (& context-params) などなどの機能が使えるようになる予定です。 https://summerofcode.withgoogle.com/projects/#5527632738779136

                                                                GSoC 2021 に参加して Scala3 の開発環境を改善させてもらった - たにしきんぐダム
                                                              • まえがき|やさしい Scala ~Json ライブラリ の実装をなぞりながら Scala 3 と関数型プログラミングの初歩を学ぶ~

                                                                  まえがき|やさしい Scala ~Json ライブラリ の実装をなぞりながら Scala 3 と関数型プログラミングの初歩を学ぶ~
                                                                • 「Scala 3」が公開 | OSDN Magazine

                                                                  Scalaプログラミング言語の開発チームは5月14日、最新のメジャーリリースとなる「Scala 3」を公開した。 Scalaは強い静的型付けを特徴とするプログラミング言語。Scala 3は2006年に公開されたバージョン2に続くメジャーリリース。”Dotty”という開発コードで8年の開発期間を経てのリリースとなり、その間100人以上の開発者が参加した。コミット数は約2万8000件、プルリクエストは約7400件あり、約4100のイシューをクローズしたと報告している。Scala 3はScala言語を全面的に見直し、型システムの多数の要素に変化が加わっている。 多数の新機能が盛り込まれているが、中でもバージョン2では実験扱いだったマクロを強化し、インライン、コンパイル時最適化などのメタプログラミング向けのツールを導入した。 シンタックスでは、”静かdなシンタックス”として構造を制御するif、wh

                                                                    「Scala 3」が公開 | OSDN Magazine
                                                                  • New in Scala 3

                                                                    Scala 3 は Scala 2 から大幅な改善が行われ、さまざまな新機能が追加されている。 ここでは Scala 3 の特に重要な変更点を概観する。 より詳しく知りたい方は以下の参考リンクを参照。 Scala 3 Book は Scala を書いたことがない開発者向けに書かれている。 Syntax Summary では Scala 3 で新しく追加されたシンタックスを解説している。 Language Reference を見ればScala 2 と Scala 3 の変更点を詳しく確認できる。 Scala 2 から Scala 3 への移行を考えている方はMigration Guide を参照。 Scala 3 Contributing Guide は、問題を修正するためのガイドを含め、コンパイラーをさらに深く掘り下げます。 What’s new in Scala 3 Scala 3 は

                                                                    • Scala 3は普通にAWS Lambdaで実行できる - Lambdaカクテル

                                                                      そういえばScalaをAWS Lambdaで実行するのどうするんだっけ、と思った。実はScalaをLambdaで動かしたことは無い気がするので調べておいた。今回はJava 17を前提に動作させる。 tl;dr AWS LambdaのJavaランタイム sbt-assembly sbt-assemblyへの依存性の宣言 ファイル名衝突時の設定 その他のsbtの設定 最終的なbuild.sbt コード本体 ビルド AWS Lambda側の設定 まとめと感想 参考文献 追記 今回書いたサンプルプロジェクトはこちら。 github.com tl;dr sbt-assemblyを使ってUber JARを生成する AWS LambdaをJavaランタイムでセットアップする エントリポイントを指定する JARをアップロードする 動く AWS LambdaのJavaランタイム けっこう前から、AWS La

                                                                        Scala 3は普通にAWS Lambdaで実行できる - Lambdaカクテル
                                                                      • 値の検証もコンパイラにやらせよう: Scala 3でRefinement TypesやるにはIronっていうライブラリが良さそう - Lambdaカクテル

                                                                        Scala 3でRefinement Types(篩型)を実現するライブラリIronに入門したので紹介します。最初はRefinedに入門しようとしてたら、Scala 3ではあまり動かなかったのでそのままIronに入門しました。 tl;dr Refinement Typesっていうのを使うと、普段動的にチェックしてる値の性質が型に反映されるのでコンパイラが助けてくれる ScalaでRefinement TypesをやるライブラリとしてRefinedがある Scala 3ではパワーを発揮できないので、Scala 3ではIronというライブラリをおすすめしたい Refinedよりもシンプルでめちゃ良い感じです! tl;dr Refinement Types (篩型) Refinement Types以前 通常の型 値クラス スマートコンストラクタ Refinement Types with Re

                                                                          値の検証もコンパイラにやらせよう: Scala 3でRefinement TypesやるにはIronっていうライブラリが良さそう - Lambdaカクテル
                                                                        • Scala3学習メモ: Scalaとnull, Scala2とScala3と - Magnolia Tech

                                                                          Rustの公式ドキュメントにnullに関する興味深い記事("Null References: The Billion Dollar Mistake"(Null参照: 10億ドルの間違い))が引用されています。 Enumを定義する - The Rust Programming Language nullは、インタフェースにおける双方の合意として取り得る値とするか、しないかがいつもあいまいになってしまう点が問題。ある変数の型を見てもnullを取り得るかは明示されていないにも関わらず、人によって「nullを考慮すべき」「nullは取り得ない」の二つの状態が混在してしまう。たとえ、同じ人が双方のコードを書いていたとしても。 ScalaにおけるNull型のクラス階層における位置付けと、nullの代入 https://docs.scala-lang.org/tour/unified-types.htm

                                                                            Scala3学習メモ: Scalaとnull, Scala2とScala3と - Magnolia Tech
                                                                          • 忙しい人のためのScala3予習メモ - Qiita

                                                                            この記事は、 FOLIO Advent calendar 2020 の22日目の記事です。 これは何? 「Scala3の予習したいけど時間がない!」「まだM3だしガチでキャッチアップするのはちょっと…」という人のために、公式ドキュメントを斜め読みした自分が仕事で影響が大きそうなScala3の変更点をまとめたものです。 ほとんどのサンプルコードは、Dottyの公式ドキュメントから引用しております。 val,def,型エイリアスがトップレベルに書けるようになった Scala2では、全てのval,def,型エイリアスは何かしらのclass,trait,objectなどの中に書かなければエラーになりましたが、Scala3では(まるでREPLのように)class外にdefやvalを定義することができるようになりました。package objectが要らなくなりますね。

                                                                              忙しい人のためのScala3予習メモ - Qiita
                                                                            • アルプでのScala 3移行

                                                                              class: center, middle # アルプでの<br/>Scala 3 移行 <https://alp.connpass.com/event/239935/> Scalaを使ったSaaSプロダクト開発の<br/>裏側お見せします! 2022/3/4 --- class: middle <img src="image/xuwei.gif" alt="icon" style="zoom: 0.3" /> - twitter [@xuwei_k](https://twitter.com/xuwei_k) - github [@xuwei-k](https://github.com/xuwei-k) - blog <https://xuwei-k.hatenablog.com> --- class: middle ## 近況 - 相変わらず某社でScala書く仕事してます - もう3年

                                                                              • Scala 3のmatch typeで数独solverを作った - xuwei-k's blog

                                                                                昨日の続き xuwei-k.hatenablog.com 昨日のcheckするだけのものは数秒で終わるのですが、これは手元で compileに2分くらい かかります。 速度に関して改善の余地があるのかどうか?はわかりません。 改善したら、問題が簡単なら数秒で終わるようになりました。 いくつかtweetしましたが、compilerの限界なのでは?と思ったけれど、頑張った結果、いくつかは自分のミスでした。例えば 割り算するべき箇所で余りを取っていた scala.compiletime.ops.any.== は、singleton同士ではないと比較不可能。例えば (1, 2) と (3, 4) といったTupleのまま比較不可能なので、自前でsingletonになるまで必要に応じて再帰的に分解しつつdeepなequalsを実装する必要がある(つらい) 複雑になり過ぎると、上記のようなミスをした場

                                                                                  Scala 3のmatch typeで数独solverを作った - xuwei-k's blog
                                                                                • Tuples bring generic programming to Scala 3

                                                                                  Friday 26 February 2021 Vincenzo Bazzucchi, Scala Center Tuples allow developers to create new types by associating existing types. In doing so, they are very similar to case classes but unlike them they retain only the structure of the types (e.g., which type is in which order) rather than giving each element a name. A tuple can also be seen as a sequence and therefore a collection of objects, ho

                                                                                    Tuples bring generic programming to Scala 3

                                                                                  新着記事