並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 138件

新着順 人気順

OCamlの検索結果1 - 40 件 / 138件

  • 「関数の副作用の有無」よりも大事なもの | 雑記帳

    プログラミングをやっていると、「関数に副作用がある」とか「副作用がない」あるいは「純粋である」という話をちょいちょい耳にする。そして、「外界の状態を読み取るけど変更はしない関数」、例えば function getTime() { return Date.now(); } のような関数に副作用があるか?みたいな議論が始まったりする。 くだらない議論だ。 何か概念を定義するときは、それが「役に立つ」場面を提示できる必要がある。「関数の副作用」を定義するときは、「関数の副作用」がわかったときに何をしたいのかをはっきりさせる必要がある。「関数のどういう側面に注目したいか」を決めずに「副作用の有無」を論じるのはナンセンスだ。 ここでは、言語処理系(コンパイラー)を実装する者の立場で、関数の副作用について論じてみたい。 一般に、「副作用がない」関数の呼び出しは、「副作用がある」関数の呼び出しに対するも

    • 関数型まつり2025で出たトピックの前提知識とか

      κeenです。関数型まつり楽しかったですね。関数型という広めのトピックに人が集まって色々な知識が聞けるのがこういう大きなカンファレンスの醍醐味の一つです。 ところがトピックが広いということは様々な講演を聴講するのに必要な前提知識も広範に渡るということでもあります。実際、終了後に必要だった知識のまとめや解説がほしいという声を多数みかけました。 そこで私が分かる範囲で出てきた知識の入門への案内を書いておこうと思います。 ガッと書いたので誤りがありそうですが、気付いたら優しく教えて下さい。 6/17追記: いくつか誤りを訂正・説明の補強、プログラミングテクニックに末尾再帰とFBIPを追加 言語 色々な言語が登場しました 関数型言語 Haskell ML語族 OCaml SML F# Lisp語族 Clojure Emacs Lisp Scala Elixir Elm 関数型言語は今回の主役ですね

        関数型まつり2025で出たトピックの前提知識とか
      • 関数型まつり2025まとめ&感想

        こんにちは、skytomoと申します! この記事は関数型言語に疎い人(著者)の視点から見た関数型まつり2025を書きます。 来年、参加しようか迷っている方に参考になればいいと思っています! 関数型まつり2025について 「関数型まつり2025」は関数型プログラミングのカンファレンスです! 関数型まつりとしては初めての開催ですが、前身としてScalaMatsuriがありました。 ウェブサイト:https://fortee.jp/2025fp-matsuri 参加理由 普段は業務でRubyを書いています(!?)。 Rubyは関数型言語とは程遠く、私自身も関数型言語及びその周辺知識がほとんどありません。 なぜ参加したのか気になると思いますが、今回参加したのには理由がふたつあります。 フォロワーさんが宣伝していた 関数型言語に強い興味があった 「フォロワーさんが宣伝していた」 なんかよくわからない

          関数型まつり2025まとめ&感想
        • はじめて関数型言語の機能に触れるエンジニア向けの学び方/教え方 / how-to-learn-or-teach-for-fp-beginner

          はじめて関数型言語の機能に触れるエンジニア向けの学び方/教え方 / how-to-learn-or-teach-for-fp-beginner

            はじめて関数型言語の機能に触れるエンジニア向けの学び方/教え方 / how-to-learn-or-teach-for-fp-beginner
          • Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング

            Competitive programming with Haskell Functional Festival 2025 in TOKYO

              Haskell でアルゴリズムを抽象化する / 関数型言語で競技プログラミング
            • OxCaml | About

              OxCaml is a fast-moving set of extensions to the OCaml programming language. It is both Jane Street’s production compiler, as well as a laboratory for experiments focused towards making OCaml better for performance-oriented programming. Our hope is that these extensions can over time be contributed to upstream OCaml. OxCaml’s primary design goals are: to provide safe, convenient, predictable contr

              • Pragmatic Functional Programming in TypeScript

                Pragmatic Functional Programming in TypeScript Yuichi Goto | TSKaigi 2025 on May 24, 2025 発表者について Yuichi Goto @yasaichi パーフェクトRuby on Rails共著者 株式会社EARTHBRAIN [PR] EARTHBRAINとプロダクトについて 2021年7月創業のテクノロジースタートアップ 建設生産プロセスの生産性・安全性の向上を実現するデジタル ソリューション「Smart Construction®」を開発・保守 相互連携する複数のソフトウェア・ハードウェアの形で提供 プロダクトの一部は世界20カ国以上で利用 本セッションについて 関数型プログラミング(FP)を学んでも、実務での活用方法に悩む方は少なくありません。純粋関数、イミュータブルな値、モナドなどの概念を、具

                  Pragmatic Functional Programming in TypeScript
                • Study Haskell 2025

                  久しぶりに(10年ぶりに?)Haskell書きたくなったので環境構築していく。 TS がふわふわ言語仕様過ぎて、AIに好きに書かせると崩壊する。コンパイルの難易度が高くても型の表現力が高いHaskellでどこまでやれるかをテストしたい。 (今回 Rust でないのは、システムレベルではない意味論抽象に主にフォーカスしたいから。 具体的には Extensible Effects を使いたい) 初手でこういうプロンプトを書いた。 私は haskell のエキスパートで、ユーザーに haskell の使い方を教えながらコードを書きます。 ユーザーは TypeScript のエキスパートで、多少のRustの知識があります。Haskell は初心者です。 このプロジェクトは最新の cabal でセットアップされています。 stack を使わず、 cabal のみを使ってビルドと依存関係の管理を行いま

                    Study Haskell 2025
                  • map / filter などの高階関数よりも古典的な for文の方が読みやすいと感じるあなたへ

                    class: center, middle # map / filter などの<br>高階関数よりも<br>古典的な for文の方が<br>読みやすいと感じる<br>あなたへ BuriKaigi 2025 2025/02/01<br> @gakuzzzz --- class: left, top ## 自己紹介 * 中村 学/Manabu NAKAMURA * Twitter: [@gakuzzzz](https://twitter.com/gakuzzzz) * [Tech to Value Co.,Ltd.](https://www.t2v.jp/) CEO * [Alp, Inc.](https://thealp.co.jp/) Tech Lead --- class: left, top ## はじめに 昨今のメジャーなプログラミング言語では、 `map` や `filter`

                    • How we accidentally built a better build system for OCaml

                      A “build system” is one of the most important tools in a developer’s toolbox. Roughly, it figures out how to create runnable programs from a bunch of different source files by calling out to the compiler, setting up and executing test suites, and so on. Because you interact with it daily, above all it has to be fast – but it also has to be flexible. Around 2012 we were growing dissatisfied with OM

                        How we accidentally built a better build system for OCaml
                      • TypeScriptで『関数型ドメインモデリング』をやってみよう - Qiita

                        この記事は、LIFULL Advent Calendar 2024 21日目の記事になります。 はじめに LIFULLでは、技術負債解消のためにレガシーなコンポーネントをいわゆるCleanArchitecture(以降CA)に置き換えるという取り組みをやっています。 内製ソフトウェアアーキテクチャでレガシーシステムを刷新し技術的負債を削減するまでにやったこと クリーンアーキテクチャで構築したプロダクトが2年経過してみて現状どうなっているかを紹介 新卒エンジニアがリファクタを突貫したClean Architectureプロジェクトの舞台裏 CAはいくつかのレイヤに別れていますが、LIFULLではCAのEnitityをドメイン駆動設計(DDD)で言うところのドメインモデルで実装しています。 この記事は、前に読んでいた関数型ドメインモデリングの「型によるドメインモデリング」がこの実装に応用できる

                        • GitHub - moonbitlang/moonbit-compiler

                          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 - moonbitlang/moonbit-compiler
                          • 12.2.1. Promises · Functional Programming in OCaml

                            Promises In Lwt, a promise is a write-once reference: a value that is permitted to mutate at most once. When created, it is like an empty box that contains nothing. We say that the promise is pending. Eventually the promise can be resolved, which is like putting something inside the box. Instead of being resolved, the promise can instead be rejected, in which case the box is filled with an excepti

                            • 【後編】TypeScript×関数型×DDDで、ユニットテストが激減。実践の全貌とTips【Open Developers Conference 2024 レポート】 | レバテックラボ(レバテックLAB)

                              TOPコラムテック最前線レポート【後編】TypeScript×関数型×DDDで、ユニットテストが激減。実践の全貌とTips【Open Developers Conference 2024 レポート】 【後編】TypeScript×関数型×DDDで、ユニットテストが激減。実践の全貌とTips【Open Developers Conference 2024 レポート】 2024年11月18日 株式会社一休 CTO 伊藤 直也 大学院卒業後、新卒で入社したニフティ株式会社にて、ブログサービス「ココログ」を立ち上げ。2004年、株式会社はてなに入社、CTOに就任。「はてなブックマーク」などの開発を主導。2010年以降はグリー株式会社にて、ソーシャルメディア統括部長を務める。その後フリーランスを経て、2016年4月に、技術顧問を務めていた株式会社一休に入社。執行役員CTOに就任 X GitHub 2

                                【後編】TypeScript×関数型×DDDで、ユニットテストが激減。実践の全貌とTips【Open Developers Conference 2024 レポート】 | レバテックラボ(レバテックLAB)
                              • 【前編】関数型×DDDの設計と実装は、どう進めるべきか。書籍「関数型ドメインモデリング」翻訳者が語る【Open Developers Conference 2024 レポート】 | レバテックラボ(レバテックLAB)

                                TOPコラムテック最前線レポート【前編】関数型×DDDの設計と実装は、どう進めるべきか。書籍「関数型ドメインモデリング」翻訳者が語る【Open Developers Conference 2024 レポート】 【前編】関数型×DDDの設計と実装は、どう進めるべきか。書籍「関数型ドメインモデリング」翻訳者が語る【Open Developers Conference 2024 レポート】 2024年11月18日 書籍「関数型ドメインモデリング」翻訳者 猪股 健太郎 システムエンジニア、ソフトウェア開発者。BIPROGY株式会社勤務。各種業務システムに関する開発支援や開発標準策定等に従事後、数年間の米国駐在を経て帰国。近年はアジャイルソフトウェア開発を含む開発スタイル変革に携わる。『速攻入門 C#プログラミング すぐに現場で使える知識』(技術評論社、共著)、『プログラミングXamarin 上・下

                                  【前編】関数型×DDDの設計と実装は、どう進めるべきか。書籍「関数型ドメインモデリング」翻訳者が語る【Open Developers Conference 2024 レポート】 | レバテックラボ(レバテックLAB)
                                • GitHub - goblint/cil: C Intermediate Language

                                  CIL is a front-end for the C programming language that facilitates program analysis and transformation. CIL will parse and typecheck a program, and compile it into a simplified subset of C. goblint-cil is a fork of CIL that supports C99, C11 as well as most of the extensions of the GNU C. It makes many changes to the original CIL in an effort to modernize it and keep up with the latest versions of

                                    GitHub - goblint/cil: C Intermediate Language
                                  • MoonBit | MoonBit Docs

                                    MoonBit is an end-to-end programming language toolchain for cloud and edge computing using WebAssembly. The IDE environment is available at https://try.moonbitlang.com without any installation; it does not rely on any server either. Status and aimed timeline​ MoonBit is currently in beta-preview. We expect to reach beta in 2024/11/22, and 1.0 in 2025. When MoonBit reaches beta, it means any backwa

                                    • Coccinelle: A Program Matching and Transformation Tool for Systems Code

                                      What is Coccinelle? Coccinelle is a program matching and transformation engine which provides the language SmPL (Semantic Patch Language) for specifying desired matches and transformations in C code. Coccinelle was initially targeted towards performing collateral evolutions in Linux. Such evolutions comprise the changes that are needed in client code in response to evolutions in library APIs, and

                                      • Functional TypeScript

                                        オープンデベロッパーズカンファレンス(ODC)2024 での発表資料

                                          Functional TypeScript
                                        • 【エフェクトシステムとは一体なんなのか?】なぜ私はHaskellでエフェクトシステムのライブラリを作るに至ったか

                                          はじめに 本記事は、今回筆者が作成したHaskellのエフェクトシステムライブラリの背景を説明するものです。Haskellに触れたことがない読者のために、理解に必要な事柄や文法等は記事中で簡単に説明します。Haskellやライブラリ自体に興味がなくとも、エフェクトシステムの紹介だけでも今後の参考にしていただければ幸いです。 エフェクトシステム エフェクトシステムというプログラミングパラダイムが以前より研究されていました。 これは、プログラムのコード内で起こりうる副作用を分類、タグ付けし、実行時より前に分かるようにするというものです。ここでは、副作用を分類して名前を付けて型として表したものをエフェクト型と呼び、あるコード片が発生させうるすべてのエフェクト型の集合をエフェクト集合と呼ぶことにします。 例えば 1+1 このプログラムのエフェクト集合は空集合{}です。なぜなら、一切の副作用(入出力

                                            【エフェクトシステムとは一体なんなのか?】なぜ私はHaskellでエフェクトシステムのライブラリを作るに至ったか
                                          • Fizzixnerd Blog

                                            Hello! Today I'm releasing a project on which I've been working, that is in an early stage of development, into the open source world. It is integration and bindings to Godot (currently just 4.2) from a new language: OCaml. It is called Godotcaml. Details below! Why Godot? There are many reasons to choose Godot, but the reason I'll focus on is that it provides a full game-development IDE from whic

                                              Fizzixnerd Blog
                                            • GitHub - mazeppa-dev/mazeppa: A modern supercompiler for call-by-value functional languages

                                              Supercompilation 1 is a program transformation technique that symbolically evaluates a given program, with run-time values as unknowns. In doing so, it discovers execution patterns of the original program and synthesizes them into standalone functions; the result of supercompilation is a more efficient residual program. In terms of transformational power, supercompilation subsumes both deforestati

                                                GitHub - mazeppa-dev/mazeppa: A modern supercompiler for call-by-value functional languages
                                              • GitHub - marpple/FxTS: A functional programming library for TypeScript/JavaScript

                                                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 - marpple/FxTS: A functional programming library for TypeScript/JavaScript
                                                • GitHub - panglesd/slipshow: An engine for displaying slips, the next-gen version of slides

                                                  Slipshow is a tool specifically designed for technical presentations where traditional slides are not enough. In a slipshow presentation, the equivalent of a slide is called a slip. Each slip is like a slide, but with no bottom limit. That is, the content can be arbitrarily long! During the presentation, the camera will "scroll" down to reveal the hidden content, following a script given by the pr

                                                    GitHub - panglesd/slipshow: An engine for displaying slips, the next-gen version of slides
                                                  • Getting OCaml Through the Eye of a Needle

                                                    I think OCaml is a great language. While it’s always too simplistic to put languages on a straight line, I feel it’s alright to say that it’s somewhere in between Java/C#/Go and Rust/Haskell for a couple of reasons: Immutability is the default, but you can use types that are mutable if you need/want to You can throw exceptions if you want, or play it “safe” with a Result type Concurrency can be ha

                                                      Getting OCaml Through the Eye of a Needle
                                                    • TypeScript 関数型スタイルでバックエンド開発のリアル

                                                      TSKaigi 2024 のスライドです

                                                        TypeScript 関数型スタイルでバックエンド開発のリアル
                                                      • Compiling higher order functions with GADTs

                                                        Implementing first class functions in a bytecode interpreter is trivial. But how do compilers that generate machine code (or lower to C, or SSA) implement higher order functions? Back in 2021, I found an answer when contributing closures to the Pallene compiler. Today I was researching something loosely related, and found yet another neat trick called defunctionalization in this paper. Defunctiona

                                                        • GitHub - yawaramin/dream-html: Type-safe markup rendering, form validation, and routing for OCaml Dream web framework

                                                          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 - yawaramin/dream-html: Type-safe markup rendering, form validation, and routing for OCaml Dream web framework
                                                          • なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita

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

                                                              なっとく!関数型プログラミング を読んで関数型プログラミングを学んだ - Qiita
                                                            • エラーや非同期処理をより安全に扱うための TypeScript ライブラリ Effect-TS

                                                              エラーや非同期処理をより安全に扱うための TypeScript ライブラリ Effect-TS Effect-TS は、開発者が複雑なエラーや非同期処理をより安全に開発できるようにすることを目的とした TypeScript ライブラリです。Effect-TS は、TypeScript の型システムを活用して、本番のアプリケーションにおける実用的な問題を解決することを目指しています。 Effect-TS(正式名称は Effect)は、開発者が複雑なエラーや非同期処理をより安全に開発できるようにすることを目的とした TypeScript ライブラリです。Effect System という概念を取り入れており、Scala や Haskell といった関数型プログラミング言語に影響を受けています。 TypeScript の型システムを活用して、本番のアプリケーションにおける実用的な問題を解決するこ

                                                                エラーや非同期処理をより安全に扱うための TypeScript ライブラリ Effect-TS
                                                              • OCaml 5.1 と Eio で HTTPS クライアントを書く

                                                                Eio とは Eio は、OCaml 5.0 から導入された effect handler を用いた非同期処理ライブラリです。つい先日 1.0 がリリースされ、いまアツいです(筆者調べ)。 Eio では既存の Lwt や Async と異なり処理結果が Lwt.t などの型でラップされないため、bind(>>=)や ppx_lwt の let%lwt x = ... のような記法を用いずに(direct style で)コードを書くことができるという特徴があります。例えば単純な例として、5 秒まってから "Hello world!" と出力するようなコードは、Lwt では以下のように >>= を使って書く必要がありますが: open Lwt.Infix Lwt_main.run ( Lwt_unix.sleep 5.0 >>= fun () -> Lwt_io.printf "Hello

                                                                  OCaml 5.1 と Eio で HTTPS クライアントを書く
                                                                • 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

                                                                  • ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP

                                                                    Object-Oriented Conference 2024で発表した資料です。 https://fortee.jp/oocon-2024/proposal/b31c9818-3cb8-4350-adfe-cbc839cdf829 ビジネスの専門知識(ドメイン)を中心に据えたドメイン駆動設計に…

                                                                      ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP
                                                                    • Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml

                                                                      Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml The OCaml 5 update brought much-anticipated support for programming on multiple cores. It also introduced support for concurrency via effect handlers – one of the first mainstream languages to do so. This significant update has had profound performance and UX implications, propelling OCaml into new areas of software development

                                                                        Eio 1.0 Release: Introducing a new Effects-Based I/O Library for OCaml
                                                                      • 抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】

                                                                          抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】
                                                                        • 関数型言語で学ぶプログラミングの基本 | インプレス NextPublishing

                                                                          インプレス NextPublishing 関数型言語で学ぶプログラミングの基本 著者:川井 俊輝 抽象度の高いプログラミングのスキルを身につける! 関数型プログラミングへの関心が高まる中、多くのプログラミング言語がその核心的な概念を採用しています。この流れを受け、本書ではOCamlという関数型プログラミング言語を通じて、関数型プログラミングの基礎及びその応用について詳しく解説します。 OCamlは、その直感的な文法と高度な抽象化機能を備え、複雑なアプリケーションの開発に適しています。「OCamlとは何か?」「実際に使い物になるのか?」と疑問を持つかもしれませんが、OCamlの学習は関数型プログラミングの理解を深め、さまざまな言語でのプログラミングスキルの向上につながります。 OCamlで学ぶことにより、プログラミングの基本的な概念を習得し、他言語にも適用可能なプログラミング技術を手に入れる

                                                                            関数型言語で学ぶプログラミングの基本 | インプレス NextPublishing
                                                                          • 私とテストと自動化と - あどけない話

                                                                            何度か講演でこの話をしたのだが、気が向いたのでエッセンスを書き下しておこうと思う。 テスト駆動という言葉が流行る前にプログラマとなった私は、当初どのようにテストを書いてよいのか分からなかった。そんなとき、(当時はオーム社で現在はラムダノートの)鹿野さんから「ビューティフルコード」を献本していただいた。分厚い本なので、興味ある章から読んでいった。その一つがアルベルト・サボイア氏が書いた7章「ビューティフル・テスト」だ。 ビューティフルコード (THEORY/IN/PRACTICE) 作者:Brian Kernighan,Jon Bentley,まつもとゆきひろオライリージャパンAmazon この章では、例として二分探索が取り上げられる。二分探索のアイディアが出されたのは1946年だが、バグのない実装ができたのは12年後だという。実際に実装してみると分かるが、ソートされた配列の中に目的の要素が

                                                                              私とテストと自動化と - あどけない話
                                                                            • Learn Lambda Calculus in 10 minutes with OCaml

                                                                              Create template Templates let you quickly answer FAQs or store snippets for re-use.

                                                                                Learn Lambda Calculus in 10 minutes with OCaml
                                                                              • F# ではじめる関数型プログラミング入門 (上巻)

                                                                                .NET ファミリーの関数型プログラミング言語である F# を利用した、全 3 巻構成の関数型プログラミング入門書籍となります。 上巻では F# の基本的な文法などの学習ができます。 なお、この書籍は本編をすべて無料で利用いただけますが、活動を応援いただける場合には最終チャプターをご購入いただけますと嬉しく思います。

                                                                                  F# ではじめる関数型プログラミング入門 (上巻)
                                                                                • Lispとオブジェクトシステム

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

                                                                                    Lispとオブジェクトシステム