並び順

ブックマーク数

期間指定

  • から
  • まで

201 - 240 件 / 357件

新着順 人気順

OCamlの検索結果201 - 240 件 / 357件

  • 関数型プログラミングの基礎及び応用を解説した書籍 - mojiru【もじをもじる】

    関数型言語で学ぶプログラミングの基本 「関数型言語で学ぶプログラミングの基本」発行主旨・内容紹介 「関数型言語で学ぶプログラミングの基本」目次 「関数型言語で学ぶプログラミングの基本」Amazonでの購入はこちら 「関数型言語で学ぶプログラミングの基本」楽天市場での購入はこちら※電子書籍ばんです 関数型言語で学ぶプログラミングの基本 インプレスグループでIT関連メディア事業を展開するインプレスは、川井俊輝氏著書による、技術書典や技術書同人誌博覧会をはじめとした各種即売会や、勉強会・LT会などで頒布された技術同人誌を底本とした商業書籍を刊行し、技術同人誌の普及と発展に貢献することを目指し最新の知見を発信する技術の泉シリーズ2024年2月の新刊としてOCamlという関数型プログラミング言語を通じて、関数型プログラミングの基礎及びその応用について詳しく解説した一冊「関数型言語で学ぶプログラミング

      関数型プログラミングの基礎及び応用を解説した書籍 - mojiru【もじをもじる】
    • 既存言語のミニ版ぽいものまとめた

      東大のCPU実験の記事を読んでいたらお馴染みの MinCaml の他にもいくつか既存言語のミニ版があり、探してみました。 他にもおすすめのミニ言語あれば Twitter: @kaito_tateyama 宛、もしくは discussionにコメント で教えてください。 概要 一般の言語処理系を意識した言語のミニ版っぽいものを挙げます。大学の講義で使用された/教育目的/自作目的など色々です。 ML: MinCaml C: chibicc Ruby: minruby Swift: MinSwift Go: babygo Scala: pscala 追記: mal, quickjs 詳細 ML: MinCaml リポジトリ: esumii/min-caml 東大のCPU実験の記事でお馴染みのMinCaml。これをFPGAの上で動かしてレイトレーシングを行うらしい。 型周りも実装されている教育目的

        既存言語のミニ版ぽいものまとめた
      • 『定理証明支援系 Coq チュートリアル』に参加した - yhara.jp

        先週の土日にこのオンラインセミナーに参加してみた。 定理証明支援系 Coq チュートリアル - connpass 定理証明は、名前は聞くけど触ったことはなくて、興味はあるけど本を買うほどのモチベーションはないし、誰か詳しい人が要点だけ教えてくれたりしないかな〜。と思っていたところ、まさにぴったりのイベントが。なんていうか、昔ならこういうのは東京まで行かないと参加できなかった気がするけど、家からオンラインで参加できるようになったのは嬉しいね。 日程は5時間 x 2日という長丁場で、説明だけでなく練習問題もあるのでとっても疲れた!でもこういうのって自分で手を動かさないと「わかったような気になった」だけで終わりがちだから、演習があるのはとてもありがたい。 Coqの感想 これまでいろんなプログラミング言語を触ってきたけど、証明とプログラムが一体になった環境は新鮮で面白かった。「整数」「文字列」みた

        • 10 Most(ly dead) Influential Programming Languages

          The other day I read 20 most significant programming languages in history, a “preposterous table I just made up.” He certainly got preposterous right: he lists Go as “most significant” but not ALGOL, Smalltalk, or ML. He also leaves off Pascal because it’s “mostly dead”. Preposterous! That defeats the whole point of what “significant in history” means. So let’s talk about some “mostly dead” langua

          • Haskell vs OCaml

            haskell Published on December 6, 2019, last updated December 11, 2019 This is a comparison between the two languages by someone who has written code professionally in both. That said, I’m much more familiar with Haskell than with OCaml, so if you think there is a mistake in the text, let me know. Background and users Haskell is a niche, rarely used language. The situation is changing, but make no

            • ぼくはいかにして社会人学生になったか|nloglogn|note

              はじめに:イントロダクション お気づきの方もいらっしゃるでしょうが、この記事の題名「ぼくはいかにして社会人学生になったか」は、内村鑑三の著書「ぼくはいかにしてキリスト教徒になったか」のオマージュです。「なぜ」ではなくて「いかにして」なのです。本記事には、もしかしたらみなさんが期待しているかもしれない、社会人学生のメリット・デメリット、あるいは社会人学生になるにあたって悩みに悩みぬいた思考の記録などはほとんど含まれていません。きっと、そういうことは他の方が書いてくださるでしょう。ぼくがここで書きたいのは、ぼくというどこにでもいる人間が、「いかにして」社会人学生という奇妙な立場で生きることになったのか、という個人史の記録なのです。 ではなぜそんなものを書こうとしたのか。誰の利益にもなりそうもなければ、自分にとっても無駄に個人情報を晒すだけなのに。実はこれを書いているぼくにもはっきりとはわからな

                ぼくはいかにして社会人学生になったか|nloglogn|note
              • Applicative parsing | Notes on Computing

                Parser combinators are sets of functions for building parsers in a composable fashion. Haskell’s Parsec library and OCaml’s Angstrom are two examples. Both of these libraries expose monadic interfaces for describing context-sensitive grammars. This post looks at implementing a more restricted parsing library, structured around applicative functors rather than monads. What could justify giving up o

                • Build Your Own X

                  Build Your Own X (insert technology here) This repo is forked from awesome anistefanovic/build-your-own-x , site is created and maintained by Kalan which converted github README.md to website, and probably will add more opinionated resource. Follow me on Twitter or contibute your article link on Github is always welcomed! C++ C# / TypeScript / JavaScript Java / JavaScript Java JavaScript / Pseudoc

                    Build Your Own X
                  • GitHub - udem-dlteam/ribbit: A small and portable Scheme implementation with AOT and incremental compilers that fits in 4K. It supports closures, tail calls, first-class continuations and a REPL.

                    The Ribbit AOT compiler is written in Scheme and can be executed with Gambit, Guile, Chicken and Kawa. It has been tested with Gambit v4.7.5 and above. For the best experience install Gambit from https://github.com/gambit/gambit . There are also prebuilt versions of the Ribbit AOT compiler in the prebuilt directory, allowing the AOT compiler to be executed using another language interpreter, such

                      GitHub - udem-dlteam/ribbit: A small and portable Scheme implementation with AOT and incremental compilers that fits in 4K. It supports closures, tail calls, first-class continuations and a REPL.
                    • プログラミング言語大全

                      2020年4月18日紙版発売 2020年4月18日電子版発売 クジラ飛行机 著 B5変形判/216ページ 定価1,980円(本体1,800円+税10%) ISBN 978-4-297-11347-6 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 本書のサポートページサンプルファイルのダウンロードや正誤表など この本の概要 プログラミング言語の大全集! 100以上のプログラミング言語や処理系,関連言語を幅広く解説。C,Java,Python,PHP,Ruby,JavaScript...主要言語はもちろんマイナー言語まで収録。初心者にも経験者にも楽しい一冊です。 こんな方におすすめ どの言語を学ぶべきか知りたいプログラミング初心者,新人プログラ

                        プログラミング言語大全
                      • First thoughts on Rust vs OCaml

                        I'm about two weeks into Rust now, so this feels like a good time to write a critique, before I get Stockholm Syndrome'd. My main motivation in learning Rust is that I have to maintain some of Dark's Rust code. There was a recent outage related to that code, and I had to learn on the fly, so better to actually know what I'm looking at. I've also been dreaming of rewriting Dark in Rust for quite so

                          First thoughts on Rust vs OCaml
                        • TaPL のサンプルコードを dune でビルドして読みやすくする

                          TaPL(型システム入門 -プログラミング言語と型の理論-) は型システムについて体系的に学べる教科書です。 友人から「型周りちゃんと勉強したいならこれ読むと良いよ〜」と勧められ読んでいるのですが、正直何もわからんという状態なのでサンプルコード(実装)から本文を読み解いています。 この本にはサポートページが存在しており、implementations というセクションからサンプルコードを DL することができます。 ただしこのサンプルコードをそのまま読んでいくのは少し辛いところがあったのでそれを読みやすくできるようにするのが本記事の趣旨です。 TaPL のサンプルコードがやっていること 本文では構文の評価規則や型付け規則を実装していく例が乗っているのですが、配布されるサンプルコードでやっていることはコンパイラの自作です。 評価可能な形に変換したり、それをテストしたりするわけなので、字句解析

                            TaPL のサンプルコードを dune でビルドして読みやすくする
                          • GitHubの差分表示を利用して技術書を読む | mom0tomo

                            これは Livesense Advent Calendar 2022 DAY 11 の記事です。 はじめに最近、読み方を工夫することで長い間積読になっていた技術書を読了しました。相性が合う本および読者であればこの読み方はお薦めできると思ったので紹介します。 具体的には、GitHubを利用してこういうふうにして読んでいます。 Pull Requestの差分を利用して実装をわかりやすくする Pull Requestのコメントを利用してメモを取る Pull Requestを利用して本のページをコードと共に残す Pull Requestのラベルを利用して節ごとにわかりやすく一覧化する やりたかったこと『Go言語でつくるインタプリタ』という本があります。 わたしはこの本が日本で出版された翌年(今から4年前)に読みはじめましたが、途中で挫折して読み切ることができませんでした。具体的には、「構文解析」の

                            • Re: 言語のはなし / jmuk - Message Passing

                              話をふられてなんなんだけど、最近あんまりML系の言語を使ってみたりしていないんだよな。最後になにかやったのは、min-camlがwasmを吐けるようにしたことで、あれはOCamlで書いたのだったか(min-camlはセルフホストではなく、OCamlで書かれている)。公開もしていない……自分で書いた部分がかなりmessyで気が滅入る感じになってしまったので放置している。 Haskellの型クラス そういえばポッドキャストで最近、Haskellの歴史の論文を読んだのを紹介した。2カラムで50ページ以上という長大なる論文なので仕方なくかなりの部分を割愛したが、なかでも型クラスの話はほとんど触れずに飛ばしたように思う。ところがあの論文は “being lazy with class” という副題がついてるくらい、なにかと型クラスの話をする論文なのだった。論文著者の気持ちとしては、型クラスこそがHa

                                Re: 言語のはなし / jmuk - Message Passing
                              • 新・エンジニアの祭典 TechFes2022を開催しました - LIVESENSE ENGINEER BLOG

                                これは Livesense Advent Calendar 2022 DAY 19 の記事です。 今井です。全社のエンジニアにとって年1の社内イベントとしてTechFes2022を開催しました。TechFes2022に運営の一人として開催に携わったため、レポートします。 イベント概要 コンセプトとイベント名称の変更 参加者の変化 スペシャルトーク エントリー一覧 イベント振り返り まとめ イベント概要 TechFes2022を11月25日に開催しました。こちらは、毎年恒例となっていたエンジニアの祭典「Tech Award」の名称を変更し開催したものです。 made.livesense.co.jp made.livesense.co.jp コンセプトと名称変更の詳細については後述しますが、例年の「エンジニアがお互いの業務を評価しあい、優れた成果を出した取り組みを表彰するイベント」から、「エン

                                  新・エンジニアの祭典 TechFes2022を開催しました - LIVESENSE ENGINEER BLOG
                                • Frama-Cのもたらすセキュリティ

                                  株式会社ブロードバンドセキュリティ エグゼクティブ・フェロー※ 安藤 一憲 ※取材当時の役職になります。 本稿はC言語のわからない方も、ゆくゆくは一般に「プログラミング言語」に適用できそうな話だと思って読んでいただきたい。ソフトウェアのバグで航空機が飛べなくなり、航空機メーカーの業績にも影響する昨今、ソフトウェアの品質管理はどの会社にとっても重要な課題である。すでにソースコード診断でセキュリティや品質を担保しているお客様も多い中、本稿ではエアバス社等で使用されているソースコードの検証ツールを紹介する。 C言語のソースコード解析ツールFrama-C 「ソフトウェアはソースコードに書いた通りに動作するのか?」という命題にはさまざまな答えがあろう。コンパイルエラーが出るもの、実行時にエラーで止まるものもある。ソースコードの脆弱性をチェックするツールはすでに弊社診断サービスにも使われているが、さら

                                    Frama-Cのもたらすセキュリティ
                                  • 文字列を段階的に組み立てる - Qiita

                                    プログラムで文字列を組み立てていると、 "(" ^ なにか ^ ")" のように、文字列結合で段階的に結果を組み立てたいことがある。 文字列が小さいことがわかっているうちはこれでもよいのだけれど、文字列が大きくなってくると段々と計算量が気になってくる(特に最適化をしていなければ、文字列の長さを n とすると結合のたびに O(n) のコストがかかる)。 左から右に組み立てることがわかっていれば、OCamlなら Buffer モジュールが使えるが、括弧のようなものがからむとそうも言っていられない。 stringを使うのをやめて、ropeのようなデータ構造を使う手もあるけど、依存ライブラリを増やしたくない場合もある(言語処理系によっては文字列の内部表現がropeになっていて以下のような小細工をする必要がない場合もある)。 ということで、自分でデータ構造をつくってみる。

                                      文字列を段階的に組み立てる - Qiita
                                    • mimiumができるまで

                                      2019年度は、6月に未踏IT人材育成・発掘事業というものに採択されひたすら音楽プログラミング言語を作っていました。未踏そのものについての記事はこちら https://github.com/mimium-org/mimium mimiumという名前の音楽プログラミング言語です。要するにコンパイルすると音が鳴るんですが、それなりに低レベルの信号処理も楽譜レベルの処理も両方一つの言語で書けるようなものを目指して現在も開発中です。 具体的な言語仕様とかは未踏の成果報告会のプレゼンを改めてまとめたものを別に作っていますのでまた後日。今回はおおよそ1年かけて音楽プログラミング言語ができるまで何があったかの備忘録です。 年始、路頭に迷う 2019年の初頭は、修士課程がどうにか終わり、フリーサンスでどうにか食って行けそうならそれがいいなあとか思っていたら全然仕事が集まる気配もなく、とりあえず内部進学なら

                                        mimiumができるまで
                                      • GitHub - colis-anr/morbig: A static parser for POSIX Shell

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

                                          GitHub - colis-anr/morbig: A static parser for POSIX Shell
                                        • Zig, Parser Combinators - and Why They're Awesome

                                          In this article we will be exploring what parser combinators are, what runtime parser generation is - why they’re useful, and then walking through a Zig implementation of them. What are parser combinators?Why are parser combinators useful?Going deeper: runtime parser generationA note about traditional regex enginesImplementing the Parser interfaceCompile-time vs. run-timeThe parser interfaceZig ge

                                          • 集合論の言語の有限構造がZFCの各公理を満たすか判定するプログラム - 理科

                                            この記事はMathematical Logic Advent Calendar 2019の8日目の記事です。 もともと「C[0,1]の中の微分可能関数全体がΠ^1_1完全なこと」という記事を書く予定でしたが、予定変更です。 adventar.org 集合論の言語の有限構造がZFCの各公理を満たすか判定するプログラムをOCamlで書きました。 ただし、分出公理図式と置換公理図式はそれぞれ無限個公理があるわけですが、それらについてはそのすべてのインスタンスを満たすことを判定します。 たとえば、Kunenの"The Foundations of Mathematics"に載っている7つの有限モデルについて各公理を確かめてみます。 図は邦訳『キューネン数学基礎論講義』(訳: 藤田博司)より抜粋です。 ノードxからノードyに辺が貼ってあったら、x∈yの意味です。 ついでに次のモデルも追加しておきます

                                              集合論の言語の有限構造がZFCの各公理を満たすか判定するプログラム - 理科
                                            • 世界のプログラミング言語(19) 実用性と先進性を両立した関数型の言語「F#」

                                              F#はマイクロソフトリサーチによって開発されたプログラミング言語です。関数型言語のOCamlをベースに開発されています。C#やVisual Basicと同じように、.NET Framework上で動作するのが特徴で、.NET由来の豊富なライブラリが利用できます。そのため、型推論やパターンマッチ、遅延評価など関数型言語由来の先進的な機能を持ちながら、.NETの実用的なライブラリを利用できるのが特徴です。 F#について F#は2002年にマイクロソフトリサーチのドン・サイムらによって開発が始められ、Visual Studio 2010のリリースと共に公開されました。もともと、実用性が高く人気の関数型言語のOCamlをベースにして開発されました。そのため、OCamlの影響を強く受けています。F#のFはFunctional(関数型)を意味しています。 また、.NET上で動作するのが特徴で、C#やV

                                                世界のプログラミング言語(19) 実用性と先進性を両立した関数型の言語「F#」
                                              • 関数型言語の実装のチュートリアル - prog-lang-sys-ja

                                                関数型言語を実装するときに参考になるウェブ上の資料 京都大学工学部専門科目「プログラミング言語処理系」講義資料 「プログラミング言語処理系テキスト」の中で、OCamlのサブセットである言語MiniMLのインタプリタとコンパイラをOCamlで作る。 目次(一部): 3章: 型無し MiniML インタプリタの実装 4章: 型推論機能付き MiniML インタプリタの実装 5章: MiniML コンパイラの実装 速攻MinCamlコンパイラ概説 プログラミング言語MLのサブセット「MinCaml」のコンパイラをOCamlで作る。 目次(一部): 字句解析 構文解析 型推論 K正規化 α変換 β簡約 ネストしたletの簡約 インライン展開 定数畳み込み 不要定義削除 クロージャ変換 仮想マシンコード生成 13 bit即値最適化 レジスタ割り当て アセンブリ生成 Essentials of Com

                                                  関数型言語の実装のチュートリアル - prog-lang-sys-ja
                                                • OCamlの開発環境2019末

                                                  この記事は株式会社オープンストリームアドベントカレンダーの3日目の記事です。 年の瀬ということで、いい感じに部屋が冷えてきてちょうどよいです。さて、 あまりネタがない 今回はOCamlの開発環境について書こうかと思います。 以前にも書いたんですが、ちょっとした更新とか、結構大きな更新とかがあったので、まとめということで。 Package Manager opam (OCaml Package Manager)でどうぞ。現状、過去から受け継がれているとかで無い限り、これを使わない理由は皆無になりました。 version 2.0からは、ローカルのパッケージを簡単に追加できるようになっているので、このパッケージが更新されない・・・とかにも対応することが出来たりします。 Windowsへのクロスコンパイルなどの用途でも利用できるものなので、まー大人しく使っておきましょう。なお、Windows用のバ

                                                  • とにかくWEB言語してみたい | ラング・ラグー

                                                    本稿はTeX & LaTeX Advent Calendar 2022の23日目の記事です。22日目はtasusuさんでした。24日目はgolden_luckyさんです。 TeXの実装言語といえばWEB言語ですが、皆さんは少しでもよいのでWEB言語でプログラムを書いたことがあるでしょうか? 多くの有名ソフトウェアはC/C++、Java、Ruby、Pythonといったメジャーな言語で書かれており(むしろ、だからこそメジャーとされるわけですが)、一般にプログラマと言われている人であればこうした言語に関しては何かしらの経験や知見があって、その気になればそのソースコードを読んで理解したり、場合によっては改造したりということができるかと思います。一方、TeXはその挙動が偏屈なのもさることながら、実装も現代的感覚からするとかなり風変わりです。実際、TeXの実装言語であるWEB言語もまたKnuthがオリ

                                                      とにかくWEB言語してみたい | ラング・ラグー
                                                    • Coqに入門した感想 - 未完成な論を綴るブログ

                                                      最近、定理証明支援のCoqを入門している。というのは、以前の職場にいたときの職場でもCoqをやっている先輩がいて、今回の職場でも定理証明支援系を使っている同僚がいて、しかも最近自分はプログラミング言語実装をやっているためか、Coqや依存型について聞かれることがあるので、一念発起して取り組み始めた。 しかし、案の定、何から始めたらいいのかわからず入門に躓いてしまい、かなり難しいと感じた。しかも一番最初に読み始めた本が、Certified Programming with Dependent Typeという初心者向けではない本だったため、事態は混迷を極めていた。 そんな難関を乗り越えて2ヶ月、ようやく基本的な証明をできるまでたどり着いたので、メモ代わりにどう入門すればよいか残しておこうと思う。 1. 関数型のプログラミング言語を学ぶ 自分は関数型プログラミング言語の処理系を設計・実装したことが

                                                        Coqに入門した感想 - 未完成な論を綴るブログ
                                                      • One Program Written in Python, Go, and Rust

                                                        Update (2019-07-04): Some kind folks have suggested changes on the implementations to make them more idiomatic, so the code here may differ from what’s currently in the repos. This is a subjective, primarily developer-ergonomics-based comparison of the three languages from the perspective of a Python developer, but you can skip the prose and go to the code samples, the performance comparison if yo

                                                        • Real World OCaml

                                                          PrologueWhy OCaml?A Brief HistoryThe Base Standard LibraryThe OCaml PlatformAbout This BookWhat to ExpectInstallation InstructionsCode ExamplesContributorsPart 1: Language Concepts1. A Guided TourBase and CoreOCaml as a CalculatorFunctions and Type InferenceType InferenceInferring Generic TypesType Errors Versus ExceptionsTuples, Lists, Options, and Pattern MatchingTuplesOperators in Base and the

                                                          • Bunlog | 読んで良かった入門技術書

                                                            以前インフラ分かんね~って言ってるフォロイーがいたので、何となく「この本良いよ~」っていうツイートをしたところ、そこそこ反応があって、ちょっと意外でした。 Web 開発の入門レベルの技術書なんてもう大体定番決まってるしみんなまとめてるじゃん、って思ってたんですが、「初めての一歩のその次のレベル」の入門書についてはちょっと需要あるっぽいです。 私は駆け出しに何度も成功している駆け出しエンジニアのプロなので、入門レベルの技術書についてそこそこ詳しくなっています。なのでここでは自分が読んで良かったと思った入門レベルの技術書を書いていきます。随分前に読んだものも含んでて、もしかしたら内容間違ってるかもしれないんで、指摘してくれればありがたいです。また各ジャンルの名称はマジで適当なので許してください 言語処理系とか オブジェクト指向でなぜつくるのか 第 2 版 「オブジェクト指向 入門」って検索した

                                                              Bunlog | 読んで良かった入門技術書
                                                            • Leaving Haskell behind

                                                              For almost a complete decade—starting with discovering Haskell in about 2009 and right up until switching to a job where I used primarily Ruby and C++ in about 2019—I would have called myself first and foremost a Haskell programmer. Not necessarily a dogmatic Haskeller! I was—and still am—proudly a polyglot who bounces between languages depending on the needs of the project. However, Haskell was m

                                                                Leaving Haskell behind
                                                              • Untitled/unsorted collection of math notes

                                                                Untitled/unsorted collection of math notes Dennis Yurichev Untitled/unsorted collection of math notes Dennis Yurichev May 18, 2023 Contents 1 Unsorted parts 1 1.1 Fencepost error / off-by-one error . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 GCD and LCM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.2.1

                                                                • OCamlで48 Hour Schemeをやってみる その5 (第九、十章) - Arantium Maestum

                                                                  Write Yourself a Scheme in 48 Hoursの最後の二章をやっていく。入出力と標準ライブラリ作成。 第九章:入出力 stdin, stdoutやファイルに対する入出力を実装する。 github.com 例によって「Haskellだとモナドが出現していろいろ型を頑張らないといけないけどOCamlだから・・・」という案件。 HaskellではIOモナド型のために新しいIOFunc式を用意したりしているが、OCamlだと普通に今まで通りPrimitiveFuncに放り込んでいける。 type expt = (* 省略 *) | PortIn of in_channel | PortOut of out_channel と入出力用のchannelをラップしたPortIn/PortOut式は用意する。あとはIoモジュールでそれを使う関数を定義し、primitives.mlで

                                                                    OCamlで48 Hour Schemeをやってみる その5 (第九、十章) - Arantium Maestum
                                                                  • How I Switched from TypeScript to ReScript

                                                                    A glimpse into a more civilized (yet challenging) tool in the JavaScript ecosystem Art for ReScript Blog, credit to Bettina SteinbrecherThis is not evangelism of ReScript or a one-to-one comparison with TypeScript. I love TypeScript. I decided to rewrite a small TypeScript+React+Jest side project into ReScript. ReScript is not new. In a way it’s as old as JavaScript itself. ReScript is a rebrandin

                                                                      How I Switched from TypeScript to ReScript
                                                                    • psyche - コンパイルしてWebAssemblyを生成する専用言語

                                                                      WebAssemblyはプログラミング言語ではなく、様々な言語から生成されるWebブラウザ上で動作するバイナリフォーマットです。CやC++、Rustで書くのが基本ですが、GoやJava、C#など多彩な言語からWebAssemblyを生成できます。 今回紹介するのはpsycheという専用言語で、OCamlで実装されています。 psycheの使い方 例えばフィボナッチ数を求める場合は次のように記述します。 pub fn main() { fib(7) (* => 13 *) } fn fib(n) { if n == 0 || n == 1 then n else fib(n - 1) + fib(n - 2) } そして、このスクリプトをコンパイルすると out.wasm というファイルが生成されます。 psyche make example.psy out.wasmを実行する場合は以下のよ

                                                                        psyche - コンパイルしてWebAssemblyを生成する専用言語
                                                                      • All my favorite tracing tools: eBPF, QEMU, Perfetto, new ones I built and more - Tristan Hume

                                                                        Ever wanted more different ways to understand what’s going on in a program? Here I catalogue a huge variety of tracing methods you can use for varying types of problems. Tracing has been such a long-standing interest (and job) of mine that some of these will novel and interesting to anyone who reads this. I’ll guarantee it by including 2 novel tracing tools I’ve made and haven’t shared before (loo

                                                                        • Type Inference Was a Mistake

                                                                          Type inference is bad. It makes code harder to read, and languages that use it too much are harder to write. It’s a false economy whereby you save unobservable milliseconds of typing today and make everything else worse. Type Inference Makes Code Less Readable If you have an IDE with a working LSP, you can hover over variables to see their types. In VSCode with rust-analyzer I can see the type ann

                                                                          • MSPとTagless-finalで作るインタプリタ 実用的なDSL構築のアプローチ

                                                                            アジア最大級の国際Scalaカンファレンスである「ScalaMatsuri2020」がオンラインで開催されました。そこでビジョナル・インキュベーションの鈴木氏が、Dottyで可能になったマルチステージプログラミング(MSP:Multi-stage Programming)について話しました。後半では、Tagless-finalとマルチステージプログラミングを組み合わせた高性能なDSL構築アプローチについて話しました。前半はこちら。 Tagless-finalとは何か 鈴木健一氏(以下、鈴木):次は、Tagless-finalの話ですね。Tagless-finalはいろいろなところで最近話に出てきていますけれども、Tagless-finalパターンとしての、エフェクトラッパーとしてのTagless-finalの話とはちょっと違って、DSLを構築するところの話ですね。 Tagless-finalが何

                                                                              MSPとTagless-finalで作るインタプリタ 実用的なDSL構築のアプローチ
                                                                            • Second-Class References

                                                                              Graydon Hoare, the creator of Rust, wrote an article: The Rust I Wanted Had No Future (HN, Lobsters). It’s an interesting discussion of programming language evolution, the competing pressures of expedience and technical perfection, and the social consequences of technical decisions. He concludes that the language he would have built, given absolute creative control, would not have been as popular

                                                                                Second-Class References
                                                                              • WORDIAN Advent Calendar 2019/12/22: プログラミング言語Klassicの紹介 - kmizuの日記

                                                                                まえがき この記事はWORDIAN advent calenderの22日目の記事です。 以前にこのブログでも触れたことがあるのですが、私が開発中のプログラミング言語Klassicについて紹介します。 Klassicの紹介 リポジトリはこちら。Scala環境があれば、ビルド&実行できますが、まだまだ挙動変わりまくってますので、試してみたいチャレンジャーな方々以外にはお勧めしません。 さて、Klassicです。そもそも、この言語、旧称Toysといって、探偵オペラミルキーホームズシリーズ[^milky] にハマってた頃に、そこから名前を取って作った言語だったりします。当時のリポジトリを見ると、二期が黒歴史にならなければいいとかいうのがサンプルコードに書いてあったりして、懐かしいなあと思ったりしました。 それはおいといて、Klassicです。 静的型&型推論を持っている まずは例をば。 def

                                                                                  WORDIAN Advent Calendar 2019/12/22: プログラミング言語Klassicの紹介 - kmizuの日記
                                                                                • I'm as shocked as you, but the Darklang backend rewrite is actually complete

                                                                                  For the first few years of the life of Darklang, each time we didn't have a library available for our OCaml-based backend, or decided to build a feature in our DB instead of on a proper cloud server, we said "ugh, let's hack this and we can fix it when we rewrite it in Rust". Realizing that Dark was going to be running with a small team for a long time, it was clear that we couldn't keep piling on

                                                                                    I'm as shocked as you, but the Darklang backend rewrite is actually complete