なんか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
Tumblrから出戻ってきました。 8/4のLL DecadeのLT大会に出るのでぜひお越しください。 さて、モナってますか? scalazなどでよく出現する[({type F[X] = G[A,X]})#F]のようなコードですが、これが何を意味しているのか最近やっと理解できたので、久しぶりにScalaの事書きます。 この記事はhigher kinded type(高階型)を理解していることが前提です。 結論からいうと、型パラメータの部分適用を行うためのテクニックです。以下のサンプルコードはscalazを使ってます。 用語 まず、この記事で使う用語を定義します。 higher kinded type(高階型) 「いくつかの型パラメータを取る型コンストラクタ」のこと。 例えば、ListはList[Int]のように、「型パラメータをひとつ取る型」なので高階型。 Eitherは、Either[T
こんにちは。エムスリーエンジニアリンググループでScalaとマミさんが好きな安江です。今回は私が所属しているデジカルチームのお話です。ZIO Lambdaを使ってScalaネイティブバイナリをAWS Lambdaで動かしてみました。こちらの技術スタックの紹介をします。 ZIO Lambda 背景 技術スタック Scala ZIO ZIO Lambda GraalVM Native Image 実装 プロジェクトの作成 ライブラリの追加 ハンドラーの作成 ネイティブバイナリのビルド AWS Lambdaへのデプロイ まとめ We are hiring !! 背景 特定の処理で、外部から提供されたJARライブラリを使う必要がありました。弊社電子カルテはRails製なのですが、別のバックエンドにSkinny(Scala)製のサーバーを使っていたため、そのサーバーに処理を相乗りさせました。しかし、
この記事は、Scala Advent Calendar 2023の5日目の記事です。 qiita.com 大遅刻してしまいましたが、Scalaは遅延評価できるのでモーマンタイですね。 この記事では、Scalaをクラウドネイティブな環境で使う例の紹介として、ScalaをJavaScriptコードにトランスパイルしてAWS Lambdaで動作させる方法を紹介します。 愉快な遠足の始まりだ!!! Scalaプラットフォームの発展 Scalaはクラウドネイティブ時代に乗り遅れている?(いえいえ) 想定環境 Scala.jsで快適にLambda関数を書いてみよう 最低限のScala.jsを実装する 設定 トランスパイル Scala.jsコードをLambda関数の呼び出し規約に合わせる 規約を実装する Lambda関数を作成する イベントなどの入力 ここまでのまとめ Scala.jsでライブラリを利用
AndroidのためのJava/Kotlinはスコープ外とします まず断っておくと、俺はScalaが好きだ。 自分が作ったScalaプロダクトは二個現存している。うち一つはまだまだ自分が開発している。というか今は会社を作って1人でプロダクトを作っている身なのだが、それもScala3+ZIO2でゴリゴリ書いている。 でも残念、もうScalaというかJVM言語がオススメできません。TypeScriptかGoかRustをオススメします。 どういうこと?まずこの記事を見ていただくのが一番分かりやすい。 https://aws.amazon.com/jp/builders-flash/202310/java-serverless-saas-backend/?awsf.filter-name=*all 素晴らしいエントリーだ。読みに行かないせっかちな方のために概要を紹介する JavaプロダクトをAWS
先日こういうツイートが流れてきた。 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。— 遊撃部長F/S&RWAs (@fstora) 2024年6月6日 Q:なぜ金融系では未だにCOBOLが使われるんですか? A:お手元にExcelがありましたら任意のセルに「=4.8-4.7-0.1」って入れてみてください。 普段我々がゴリゴリ馬車馬のように使っているソフトウェアでよく利用されている浮動小数点型、すなわちfloatやdoubleなどは特定の算術に弱いことが知られている。というかもうこの手の話題はあまりに拡散されてしまったので、なぜかネット民はみんな知っている基礎教養、三毛別羆事件とかデーモンコアみたいな感じになっている。 ちなみにこれはCOBOLかそうではないか、という軸が問題になっ
実践プロパティベーステスト ― PropErとErlang/Elixirではじめよう 作者:Fred HebertラムダノートAmazon 今年読んだ技術書のベスト3を選べと言われたら、間違いなく『実践プロパティベーステスト』を取り上げます。 日本では過去に類似の本も出ていないし、これからもプロパティベーステストだけで1冊の本が出版される可能性も限りなく低いことを考えると、さっさと読んでおいた方がいい1冊と言えます。 記載されているサンプルコードをそのまま写経して動かすだけでも学びはあるけど、やはり何らかの変化が有った方がより学びが深まる。 ちょうどこの本に興味を持つきっかけがScala用のプロパティベーステスティングフレームワークであるScalaCheckに興味を持ったタイミングだったこともあって、ScalaCheckベースでサンプルコードを書き直していきながら、調べたこととかをつらつら
この記事は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 (or Java) で、jsonのdiffをpatchファイルみたいな感じでわかりやすいテキストで出力してくれるライブラリないかなあ。そしてjacksonに依存してないといいな— Arthur (@Arthur1__) 2024年1月13日 現代のプログラミングではJSONの差分を取ったり、逆にパッチを当てるということがよくある。可能ならそれがPretty Printできると良い。 JSONの差分をScalaで取る方法についていくつか調べてみたのでメモ。 JSONの差分をどう表現する? JSON Patch diffson diffsonでJSON Patchを生成する diffsonでJSON Patchを適用する diffsonでJSON Merge Patchを生成する diffsonでJSON Merge Patchを適用する JSON Pat
この記事はScala Advent Calendar 2022の19日目です. Scalaではジェネリック型の変性(variance)は+や-で指定しますが, 他の言語(たとえば, C#, Kotlin)ではoutやinだったりします. この記事では変性の意味を整理して, なぜScalaでは+/-の記号を使うのか説明します. 追記ただし, ここで説明している内容は基本的にC#やKotlinでも成立する(はずな)ので「なぜこれらの言語では+/-の記号を使わないのか」を説明するものではありません. 個人的には+/-の方がわかりやすいと思うし, out/inの記法は扱っている概念が簡単であるかのような誤解を生む(悪く言えば騙す)のでどちらかと言うと嫌いです. 発端 こういう話題がありました. Scala は共変が + で、反変が - なので理論重視? なのに対して、Kotlin と TypeSc
この記事はScala Advent Calendar 2023の11日目です. 最近, 趣味でScala 3のコードをだいぶ書いていて, マクロの使い心地のよさに感心しました. 理論的な背景も含めて, 産業界で多く使われているプログラミング言語の中では筆者の知る限りぶっちぎりに優れたマクロを備えています. 他の言語にも見習ってほしいですね. たぶん見習おうとすると処理系を作り直す羽目になりますが. この記事ではScala 3のマクロのすごいところを例を使って紹介します. マクロの実践的な例 準備 実践的な例: NamedArray – 名前でアクセスできる配列 NamedArrayのマクロ実装 記述が明瞭 メタレベルのプログラムの扱い クォートとスプライスがある パターンマッチもある 生成コードに型がつく 多段階計算に基づいている クォートとスプライスの本当の意味 ネストしたスプライス ネ
Tagless-final is a technique originally used to embed domain-specific languages into a host language, without the use of Generalized Algebraic Data Types. In the Haskell community, tagless-final still refers to a way of creating polymorphic programs in a custom DSL that are interpreted by instantiating them to a concrete data type. In the Scala community, however, tagless-final is used almost excl
Franck Mahon @ Flickr.com CC 2.0Kleisli Category — the journeyFrom wikipedia.org In category theory, a Kleisli category is a category naturally associated to any monad T So far so good, but let’s break it down into pieces with a few examples on the way so we can go back to this sentence at the end of this post and understand exactly what it means. Let’s suppose we want to handle the logs for our m
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く