並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 80 件 / 159件

新着順 人気順

OCamlの検索結果41 - 80 件 / 159件

  • Pythonを使って関数型プログラミング Part.1

    2019年9月16、17日、日本最大のPythonの祭典である「PyCon JP 2019」が開催されました。「Python New Era」をキャッチコピーに、日本だけでなく世界各地からPythonエンジニアたちが一堂に会し、さまざまな知見を共有します。プレゼンテーション「Pythonで始めてみよう関数型プログラミング」に登壇したのは、株式会社SQUEEZEの寺嶋哲氏。講演資料はこちら なぜ関数型プログラミングを愛するようになったのか 寺嶋哲氏:それでは発表を始めます。まず「おまえ誰よ?」。はい、寺嶋哲といいます。Twitterなどでは「@meganehouser」というIDでやっています。 所属は株式会社SQUEEZE(スクイーズ)で、ふだんはPython、Django、Django REST frameworkでバックエンドを書いて、AngularJS、Angularでフロン

      Pythonを使って関数型プログラミング Part.1
    • Lispとオブジェクトシステム

      Lispとオブジェクト、オブジェクト指向システムを概観します。

        Lispとオブジェクトシステム
      • GitHub - janestreet/magic-trace: magic-trace collects and displays high-resolution traces of what a process is doing

        magic-trace collects and displays high-resolution traces of what a process is doing. People have used it to: figure out why an application running in production handles some requests slowly while simultaneously handling a sea of uninteresting requests, look at what their code is actually doing instead of what they think it's doing, get a history of what their application was doing before it crashe

          GitHub - janestreet/magic-trace: magic-trace collects and displays high-resolution traces of what a process is doing
        • Pythonを使って関数型プログラミング Part.2

          2019年9月16、17日、日本最大のPythonの祭典である「PyCon JP 2019」が開催されました。「Python New Era」をキャッチコピーに、日本だけでなく世界各地からPythonエンジニアたちが一堂に会し、さまざまな知見を共有します。プレゼンテーション「Pythonで始めてみよう関数型プログラミング」に登壇したのは、株式会社SQUEEZEの寺嶋哲氏。講演資料はこちら 不変/永続データ構造を提供するパッケージ 寺嶋哲氏:続いて、不変/永続データ構造についてです。 listを操作する関数の問題点について、例題で見ていきましょう。add_mangoは果物名の文字列のlistをとって、mangoをそのlistに足して返します。change_from_apple_to_bananaは、同じようにlistをとってappleを探して、bananaに入れ替えて返します。 その

            Pythonを使って関数型プログラミング Part.2
          • Haskell〇〇多すぎ問題 - LugendrePublic

            初心者が入門書を読んでさぁ書くぞとなったときにつまずくところのうちの一つが,同じようなライブラリが多すぎ問題である. ということでそういうライブラリの話をしよう. 例によって例のごとく間違っていること書いてあるかもなので報告よろしく. モナド変換子 Haskellで実用的なプログラムを書く上で避けて通れないものの一つにモナド変換子がある.こいつはなにかというと,簡単に言えば,モナドを合成してでかいモナドを作るやつである.人間がおおよそ使うであろうモナド変換子はライブラリで提供しているので,それらを組み合わせてお望みのモナドを作ろうとするわけだが,そこに立ちはだかるのがtransformersとmtlである. transformersとmtl transformersはlift という下位のモナドのアクションをでかいモナドのアクションに持ち上げてくれるメソッドが定義されたMonadTrans

              Haskell〇〇多すぎ問題 - LugendrePublic
            • GitHub - semgrep/semgrep: Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.

              This repository contains the source code for Semgrep OSS (open-source software). Semgrep OSS is a fast, open-source, static analysis tool for searching code, finding bugs, and enforcing code standards at editor, commit, and CI time. Semgrep is a semantic grep for code: where grep "2" would only match the exact string 2, Semgrep would match x = 1; y = x + 1 when searching for 2. And it does this in

                GitHub - semgrep/semgrep: Lightweight static analysis for many languages. Find bug variants with patterns that look like source code.
              • 自作OCamlコンパイラでセルフホストした - molecular coordinates

                概要 ここ最近作っていたOCaml*1コンパイラmlml*2でセルフホストを達成しました。ヤッター github.com mlmlには以下に代表されるような、OCamlの基本的な機能が実装されています。 再帰関数 ヴァリアント、レコード パターンマッチ カリー化 モジュール また、多少の標準ライブラリも実装されています。 mlmlの特徴 ほぼフルスクラッチ 今回LLVMやパーサジェネレータに頼らないコンパイラづくりを体験するのが目的の一部だったので、結果的にフルスクラッチらしきこと*3になりました。OCamlの標準ライブラリ以外の外部ライブラリを使用しておらず、字句解析器・構文解析器は手書きです。 OCamlで書かれている セルフホストしたのでそれはそうなんですが、OCamlで書かれています。 また、言語処理系を書く場合ランタイムライブラリはC言語で用意してリンクする場合が多いと思いますが

                  自作OCamlコンパイラでセルフホストした - molecular coordinates
                • 型安全で高速な連鎖行列積の計算

                  この記事は Haskell Advent Calendar 2021 の22日目の記事です。 次のような3つの行列の積を考えてみましょう。 ABC = \begin{pmatrix} a_{00} & a_{01} & a_{02} \\ a_{10} & a_{11} & a_{12} \\ a_{20} & a_{21} & a_{22} \\ a_{30} & a_{31} & a_{32} \\ \end{pmatrix} \begin{pmatrix} b_{00} & b_{01} \\ b_{10} & b_{11} \\ b_{20} & b_{21} \\ \end{pmatrix} \begin{pmatrix} c_{00} & c_{01} & c_{02} & c_{03} & c_{04} \\ c_{10} & c_{11} & c_{12} & c_{13}

                    型安全で高速な連鎖行列積の計算
                  • 僕がお金を払ってでも教わりたいこと 2021

                    追記 一旦締め切りました。 連絡をくださった方、書籍などのアドバイスをくださった方ありがとうございます。 本文 謝礼をお支払いするので、教えて欲しいことがあります。 自習しろと言われそうですが、試行錯誤するには人生が短すぎたり、爆速突破するには能力が足りなかったりで色々辛くなってきたので何卒。 以下、学びたい優先度順です。同時に学べるのは多くて 2 つで、被った場合は優先度順でお願いすることになります。 教えて欲しいこと OCaml で Parser Combinator を 0 から作る 狙い: 関数型プログラミング言語とそれの使い方を学びたい。また、OCaml のエコシステムに詳しくなりたい。 Monadic Parser をゼロから作ることで、関数型プログラミングのテクニックや考え方を学びたいです。 すでに 教科書的な簡単な Monadic Parser を 0 dependenci

                      僕がお金を払ってでも教わりたいこと 2021
                    • F# vNext は何が "ヤバい" のか: Monadic Programming の新時代 - Qiita

                      .NET 5.0 が発表されて F# 5.0 の機運も高まってきた今日この頃ですが,型クラスの orphan instances が作れるようになるやつとか,applicative functors 用のシンタックスとか,ジェネリック等価判定・比較の高速化とか,どれも便利で面白そうだけど最近あんまり動きが見られないなあ,と思いながら Candidate for F# vNext を眺めていたところ,そんなアンニュ〜イな気分を根底から吹き飛ばすヤバい機能が実装されつつあることが先日判明し,わたしは今,冷静さを欠いています. その機能とは,これです. [WIP, RFC FS-1072] task and state machine support by dsyme This inserts a heavily modified (but semantically almost complet

                        F# vNext は何が "ヤバい" のか: Monadic Programming の新時代 - Qiita
                      • Pythonで始めてみよう関数型プログラミング

                        Migrating From Spring Boot 2 To Spring Boot 3 - What's Jakarta EE Got To Do with It?

                          Pythonで始めてみよう関数型プログラミング
                        • IoPLMaterials

                          学習の仕方 計算機科学コースの学生には講義中に別途やり方を指示します.(実験3SWもやるので.) この講義資料の GitHub のページからリポジトリを clone しましょう. OCaml が使えるように環境を設定しましょう. 落ちてきたソースコード中の textbook/interpreter/ ディレクトリの中にインタプリタのソースコードが入っているので,duneコマンドでビルドしましょう. 教科書を読みながらもりもり演習問題を解きましょう. 教科書にバグを見つけたら issue で報告しましょう. 講義の履修者は講義用 Slack で質問してもよいですね. プログラミング言語強者になりましょう.そのためには... なにか自分で言語を作って処理系を作ってみましょう.作った処理系を自慢しましょう.世界中で自作の言語が使われるようになったらいいですね. もしくは,プログラミング言語理論や

                          • パッケージマネージャを自作するときに考えること - gfnweb

                            プログラミング言語を自前で創っていると,パッケージマネージャが欲しくなってくるものだ.既存パッケージマネージャやそのラッパーによる配布で事足りることも多いが,自前言語の要件とうまく合わなかったりして,真に自分で実装せねばならないこともある.そうした場合,パッケージマネージャをどんな設計にすべきだろうか? 言語固有の都合には触れずになるべく一般に考慮すべき事項を洗い出し,簡単な設計例も提示してみたい. なお,本稿はパッケージマネージャの設計に焦点を当てたものであり,効率的に依存制約を解消するアルゴリズムなど実装の詳細については解説しない.実際例えばOCamlでは 0install-solver というOPAMの裏でも使われているパッケージを利用すれば制約解消アルゴリズムそのものに踏み込まずとも制約解消処理を実装でき,(それ自体に興味があるときを除けば)必ずしもアルゴリズムを理解する必要はない

                            • 25年前の未来の言語の話 - Qiita

                              私ごとですが、12月の9日に50歳になりました。そこでというわけでもないのですが、25年くらい前のプログラミング言語の技術について書きたいと思います。お話は大学院で学んだ動的型付けの並列オブジェクト指向の実装に偏っています。 背景 時は1990年代前半、今と同じようにCPUの性能は頭打ちになり解決策は並列化しかないということで盛んに並列処理の研究がされていました。もっとも、その後CPUは1000倍以上速くなっているのですが。 1981年にBYTE誌でSmalltalk-80を衝撃的に紹介されたのをきっかけにオブジェクト指向が注目されC++によって実用レベルで使われだしてきました。それとは別にSmalltalkのごく初期の実装(-72)にインスパイアされた、オブジェクト指向によく似た並列な計算モデルとしてアクターモデルというものが1973年に提唱されていてアクターモデルを応用した並列処理言語

                                25年前の未来の言語の話 - Qiita
                              • なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita

                                EDOCODEでエンジニアをしているYutakaです。 こちらは社内勉強会で発表した資料を元にしています。 関数型言語の知識がほとんどないエンジニアがなっとく!関数型プログラミングで学んだ用語を一部まとめました。原著はGrokking Functional Programmingです。本書はScalaとJavaで説明がされていますが、できる限り社内で使われている言語(Go, JavaScript, TypeScript)でサンプルコードを記載しました。 書籍のソースコードはこちらに全て公開されています。 そもそも関数型プログラミングとは? プログラミングのパラダイムには大きく①命令型プログラミング②宣言型プログラミングがあります。 ①命令型プログラミングとは どのよう(HOW)に計算するかに焦点を合わせ、段階的なアルゴリズムを詳細に定義します。これは実際のハードウェアの計算処理の流れに沿っ

                                  なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita
                                • OCaml Programming: Correct + Efficient + Beautiful — OCaml Programming: Correct + Efficient + Beautiful

                                  Preface About This Book Installing OCaml Introduction 1. Better Programming Through OCaml 1.1. The Past of OCaml 1.2. The Present of OCaml 1.3. Look to Your Future 1.4. A Brief History of CS 3110 1.5. Summary 2. The Basics of OCaml 2.1. The OCaml Toplevel 2.2. Compiling OCaml Programs 2.3. Expressions 2.4. Functions 2.5. Documentation 2.6. Printing 2.7. Debugging 2.8. Summary 2.9. Exercises OCaml

                                  • 関数型言語で DDD - Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# - Shin x Blog

                                    オブジェクト指向言語でドメインモデルを実装することが当然のように行われていますが、Go で開発したり、Haskell で遊んだりしている中で、他のパラダイムの言語で実装するのはどうなんだろうかという想いがありました。 そんな時に出会ったのが、Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# という本です。 概要 構成 ドメインを理解し、モデリングする 端的なフレーズ Database-Drive-Design や Class-Driven-Design との違い 型、型、型 関数型言語による実用例 恐怖のモナド さいごに 参考 概要 本書は、とある会社の受注とその関連業務をドメインとし、モデリングして、実装していくという内容です。紙ベースで行われている業務

                                      関数型言語で DDD - Domain Modeling Made Functional: Tackle Software Complexity with Domain-Driven Design and F# - Shin x Blog
                                    • Functional programming is finally going mainstream

                                      Paul Louth had a great development team at Meddbase, the healthcare software company he founded in 2005. But as the company grew, so did their bug count. That’s expected, up to a point. More code and more features mean more defects. But the defect rate was growing faster than Louth expected. “We were seeing more and more of the same types of bugs,” Louth says. “It was clear that there was an issue

                                        Functional programming is finally going mainstream
                                      • 君の手で作るモナドは怖くない - builderscon tokyo 2019

                                        Abstract 本セッションの目的は、ずばり モナド (monad) に対する 初心者の心理的障壁を取り除くこと です。モナドはプログラミング言語 Haskell と関連して言及されることが多く、世間では何か得体のしれない難解な概念だというイメージが先行しています。しかし、実際にはどのプログラミング言語にもある「処理」の概念を一般化しただけで、プログラマにとっては顔見知りの相手に過ぎません。 本セッションでは、実際の使用場面から逆算してモナドを再発明することでその必然性を体感し、必要以上に強調された神秘性を引きはがすことを目標とします。受講後には、セッション内で扱わなかった Haskell の基本文法を少し補うことで、モナドを利用した単純なプログラムならすぐに書けるようになるでしょう。 そもそも、なぜモナドや、それを用いる Haskell にはこんなにも怖ろしげなイメージが先行しているの

                                        • Interesting Programming Languages

                                          An opinionated collection of programming languages. This is a list of what I consider interesting. Requests to add to this list are welcome, but there is no guarantee I’ll include them. As you can see many mainstream programming languages are misssing from this list. Alore is a language that explores optional typing in a Python-like programming language.Alpaca is a statically typed, strict/eagerly

                                          • 関数型プログラミングを学んで見解を示す for javascript - Qiita

                                            関数型プログラミングを silver の bullet としてなりふり構わず振り回していましたが、 ちょっと真面目に学ぶ機会を設けてみました。 関数型プログラミング(Functional Programming)を学んだ参考書の紹介と 私の浅い見解についてまとめていきます。 参考書のご紹介 Functional-Light-JS 筆者曰く、筆者の数学的知識は一般レベル、Scheme/Clojure/Haskell は未経験。 そのため関数型本来の意味や各用語の学術的な意味合い等は記載しておらず、 実用的なアプローチと共にお送りする文書とのこと。 いわゆるボトムアップ。 functional-programming-jargon こちらは打って変わって関数型に関する jargon についてまとめています。 1 番ありきでこちらを付加資料として読むと見識が深まるかと思います。 いわゆるトップダ

                                              関数型プログラミングを学んで見解を示す for javascript - Qiita
                                            • 遅延評価でデバッグが困難になる状況

                                              先日、Haskell 界隈で遅延評価によってデバッグがし辛いのはどんな時かと言う話があった。見た感じ、遅延評価によってデバッグのしにくさはそんなに変わらないと言う意見が結構あり、個人的には衝撃だった。僕自身は遅延評価にだいぶヘイトを溜めてる人なので、どういう状況でデフォルト遅延評価が嫌かを実感できる問題を作った。この問題を解けば、きっとヘイトを共有できるはずってわけ。一緒に地獄に落ちような。 なお、かなり主観に寄っていて、結構書き殴ってる部分が多いので、厳密な議論をするにはあまり良い例ではないかもしれない。個人的には、備忘録的な意味合いも強くて、今まで詰まったやつをまとめておくかみたいな感じでもある。 先に結論を書いておくと、 プログラム自体が大きくて [1] 複雑な制御構造をしていて (optional) 以下のいずれかの条件を満たす 遅延評価を機能として使っている デバッグ対象が効率に

                                                遅延評価でデバッグが困難になる状況
                                              • 第一引数版パイプライン演算子 - Qiita

                                                You can read this article in English. Ruby の trunk にパイプライン演算子が入ったと話題になっていますね。 現在は意見募集中みたいな期間らしいので、思うところがある人は意見を上げると良いのではないでしょうか。 (※ Matz は「余計な混乱を生むから、名前は『チェーン演算子』とかにして記号も変更するよ( >>> とか?)」って言ってますね。 参照) ところでこの「パイプライン演算子」そのものについて、これを期に色々と語られているようですね。 @mame さんの記事がよくまとまっていてとてもわかりやすく読みやすいです。 雑に今回お話する内容に関係ある要点を抽出します。 Isabelle/ML が発祥で F# が広めた 本来は「演算子の前の式の結果を、後ろの式の結果に関数適用するもの」 なのだけど Elixir はこれを「前の式の結果を後ろの関数

                                                  第一引数版パイプライン演算子 - Qiita
                                                • GitHub - rayepps/radash: Functional utility library - modern, simple, typed, powerful

                                                  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 - rayepps/radash: Functional utility library - modern, simple, typed, powerful
                                                  • ごみ集めのない (頭の悪い) LISP

                                                    ごみ集めのないLISP 2020年5月 第17回関西Lispユーザ会 @zick_minoh 頭の悪い

                                                      ごみ集めのない (頭の悪い) LISP
                                                    • 技術書を自作PDFリーダーで読む - Haskellでつくる不思議な読書体験 (1):関数型玩具製作所

                                                      技術書典で購入した本をちょっと不思議なPDFリーダーで読んでみませんか? Acrobat Readerや、Kindleとはひと味違った読書を可能とします。 【ビルド済みソフト(Windows)】 https://polymony.net/2020/12/19/post-3765/ 【動画など】 https://github.com/polymonyrks/poppyS/blob/master/READMEJP.md 自然言語にもシンタックスハイライト的な何か(着色)を試みるものです。 難しい文書、読む気すら起こらない文書を攻略できます(速読・精読)。 技術書典10に合わせてビルド済みソフトを用意できました。 ぜひ、ご自身で体験してみてください。 (本書を買わなくてもソフトは動かせます、本書には着色戦略が書かれています) 【扱う内容】 * 自然言語への着色による視認性向上の可能性 * 具体的

                                                        技術書を自作PDFリーダーで読む - Haskellでつくる不思議な読書体験 (1):関数型玩具製作所
                                                      • ML系言語で型注釈が必要なケース - Qiita

                                                        ML系言語は型推論が得意なので基本的には型を書かなくてもコードを書けますが、状況によっては型注釈が必要になります。代表的なML系言語3つ(SML, OCaml, Haskell)について、それぞれ型注釈が必要になる(型注釈がないとコンパイルが通らない)ケースを挙げてみます。 なお、ここでは型システムのみに注目し、評価戦略はどうでもいいので、Haskellも「ML系言語」に含めています。 また、MLのモジュール/ファンクター周りは扱いません。コア言語のみを対象にします。 SML SMLで型注釈をなくすとコンパイルが通らなくなるのは、例えば以下の例です: 組み込み演算子やリテラルのアドホックなオーバーロード レコードを受け取る関数 リテラルの例: val x: IntInf.int = 12345678901234567890123; (* 型注釈を剥ぐとダメ: val x = 1234567

                                                          ML系言語で型注釈が必要なケース - Qiita
                                                        • OCaml 製 ActivityPub サーバ Waq の紹介 - HackMD

                                                          今年に入ってからずっと、OCaml で ActivityPub サーバを書いています。名前は Waq(ワク)で、例によって GitHub で大公開しています。SNS に必要な最低限の機能は揃っていて、README に従うと Docker Compose でデモが動かせるので、よければ試してみてください。

                                                            OCaml 製 ActivityPub サーバ Waq の紹介 - HackMD
                                                          • Walk around functional web frontend programming

                                                            https://opt.connpass.com/event/222709/

                                                              Walk around functional web frontend programming
                                                            • Introductory resources to type theory for language implementers

                                                              This post briefly tours resources that helped introduce me to type theory, because I’m frequently asked by others for resources on this subject (even though I never had a formal education in type theory). Specifically, these resources will focus more on how to implement a type checker or type inference algorithm. Also, my post will be biased against books, because I don’t tend to learn well from r

                                                              • 自作言語の紹介と関数型言語の実装方法の検討

                                                                はじめに 私が個人で昨年の 6 月ごろから開発している関数型プログラミング言語を紹介する。言語の名前は「Plato」である。 この言語は昨年の U22 プログラミングコンテスト最終発表会でも発表した。コンテスト後、コンパイラの構成と実装に関して調査し直して、コードを一から書き直した。コンパイラは Haskell で書かれているため、本稿の内容も Haskell の知識をベースとしている。また、型理論の知識もある程度求められる。ただ、大雑把に書いているため、大雑把に読めばよく、このブログの読解に正確さは必要無い。 このブログでは、まず Plato のチュートリアルを示し、実際に何ができるのかを説明する。次に型検査や中間言語の仕様などコンパイラの実装手法を大まかに説明する。最後に今後実現したい機能などについて述べる。理論的に面白いものや有用な機能については、後日それ専用の記事を書く予定。 チュ

                                                                  自作言語の紹介と関数型言語の実装方法の検討
                                                                • Haskell の Array

                                                                  Haskellのカレンダー | Advent Calendar 2023 - Qiita 3日目の記事です。 Haskell の Array (配列) について書こうと思います。Haskell の Array は索引が型クラスの Ix で抽象化されているため、特に配列の次元を拡張する際に柔軟性がありとても便利です。 そんな便利な Array ですが、もともと Haskell はリスト操作が強力ということもあってか、既存の参考書をみても Array の解説はほんの少しにとどまっているか、解説がないことがほとんどです。 Array が必要になる場面の多くは「リストだと !! によるインデックスアクセスで O(n) になってしまい間に合わない」という場面が多いと思います。しかし Haskell にはインデックスアクセスが O(1) の Vector (vector: Efficient Arra

                                                                    Haskell の Array
                                                                  • ML のサブセットの型推論器を Coq で検証する - fetburner.core

                                                                    この記事は言語実装 Advent Calendar 2020 の5日目の記事です. 一度でも型推論器を書いたことがあれば,そのあまりの邪悪さ,あるいはその複雑さに恐れ慄いたことでしょう. 参照を用いて単一化を実現しようものなら構文木は参照に汚染され,純粋関数型に実装しようものなら大量の型代入をどのような順序で適用したものか悩まされる. これは Hindley-Milner 型推論器を実装する上での宿命のようなものです. 本記事では,MLのサブセット——型付きλ計算をletと参照で拡張した,let多相をサポートする言語——の型推論器を Coq で実装し,その正当性を証明します. Coq で検証を行うことで我々は型推論器のバグへの恐怖とデバッグの労力から真に解放され,枕を高くして眠ることができることでしょう. もっとも、型付きλ計算を let 多相で拡張した言語の型推論器の正当性は実はすでに証

                                                                      ML のサブセットの型推論器を Coq で検証する - fetburner.core
                                                                    • プログラング言語Idrisに入門させたい(v0.9)

                                                                      これは筆者(κeen)がIdris Advent Calendar 2020に投稿した内容を土台とし、一冊の本になるように増補改訂を行なったものです。 本書では依存型のあるHaskellことIdrisについて紹介します。Idrisは純粋関数型言語であり構文もHaskellに似ていますが、大きな特徴として依存型があることが挙げられます。依存型があるとリストの長さを指定したり整数同士の割り算でゼロ除算が起きないことを保証したり、究極的には数学の証明をしたりもできます。また、依存型以外にもインタラクティブな開発環境を使った型駆動開発であったりElaborator Reflactionによるメタプログラミングだったりと注目に値する言語機能も揃っています。 総じてIdrisは非常に尖った言語です。作者がプログラミング言語理論の研究者ということもあり、かなり攻めた言語機能が入っています。依存型を搭載し

                                                                        プログラング言語Idrisに入門させたい(v0.9)
                                                                      • 型クラスのご紹介 - molecular coordinates

                                                                        この記事は型 Advent Calendar 2019の23日目です。 おはようございます!!!coord_eです、よろしくどうぞ。 はじめに この記事ではOCamlみたいなML系言語が登場します。関数型プログラミング言語と呼ばれる何かしらに触れたことがある人ならお気持ちで読み取れると思います。そうでない人はこちらからOCamlに入門してみると楽しいと思います。楽しいと思いますって何ですか... また、私は正直なところこの記事を書くにあたって関連する十分な量の文献を読みこむことができたわけではなく、誤りが存在することは容易に想像できます。誤字や誤謬を発見された方は@coord_eまでご連絡ください。 概要 型クラス (type class)はWadlerによって[1]で提案された言語機能だ。本記事では型クラスを導入する動機をオーバーローディングの観点から紹介した後、Wadlerの型クラスを

                                                                          型クラスのご紹介 - molecular coordinates
                                                                        • 関数型Pythonアンチパターン

                                                                          From Spring Boot 2 to Spring Boot 3 with Java 21 and Jakarta EE

                                                                            関数型Pythonアンチパターン
                                                                          • Release OCaml 5.0.0 · ocaml/ocaml

                                                                            OCaml 5.0.0 introduces a completely new runtime environment with support for shared memory parallelism and effect handlers. As a language, OCaml 5 is fully compatible with OCaml 4 down to the performance characteristics of your programs. In other words, any code that works with OCaml 4 should work the same with OCaml 5. The currently known exceptions to this rule are: the removal of many long-depr

                                                                              Release OCaml 5.0.0 · ocaml/ocaml
                                                                            • fp.gby

                                                                              1 C 2019.5.15 @kazu_yamamoto 2 3 4 5 6 f(x) = x + 1 7 f(x) = x + 1 f(1) = 1 + 1 = 2 f(5) = 5 + 1 = 6 8 C 9 10 C 11 12 13 C 14 15 = = 16 C 17 18 C C 19 C 20 C 21 C int f(int x) { return (x + 1); } 22 C sin 23 C printf 24 int y = 0; int f(int x) { y = y + 1; return (x + 1); } y 25 ( ) 26 27 28 29 30 31 32 33 int x = 1; x = x + 1; 34 x = x + 1; 35 36 37 38 for 39 40 int factorial(int n) { int r = 1;

                                                                              • 限定継続いろいろ | 雑記帳

                                                                                このブログでは限定継続について過去に何回か記事を書きました: LunarMLと継続限定継続と例外とモナド 今回、LunarML向けのVMに限定継続を実装してみて理解が深まったので、改めて記事にします。 限定継続:スタックを使ったざっくりとした説明 今回はスタックを使って限定継続をざっくりと説明してみます。 関数という概念を持つプログラミング言語では、スタックを使って関数の呼び出しを管理することが多いです。コールスタックとか、スタックのバックトレースとか言いますよね。ここではネイティブのスタックか仮想マシンのスタックかというのは問いません。 関数を呼び出すと、フレームと呼ばれる領域がスタックに確保されて、関数への引数やローカル変数はそこに確保されたりします。 例えば、以下のプログラムを考えます: void g() { // すごい計算 } void f() { double j; g();

                                                                                • 初めてでもこわくない!TypeScriptで関数型プログラミングをしてみよう - Qiita

                                                                                  この記事は「技育祭」というイベントで発表したものです 是非「スライドモード」でご覧ください みなさん、凶悪な関数はお好きですか? 最近弊社では「ゆめみからの挑戦状」というクイズ企画をTwitter上で行なっています その企画の中で、こんな問題を出したことがあります 「足し算関数に1行追加して、凶悪にしてください」 元となる足し算関数

                                                                                    初めてでもこわくない!TypeScriptで関数型プログラミングをしてみよう - Qiita