並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 26 件 / 26件

新着順 人気順

関数型言語の検索結果1 - 26 件 / 26件

  • HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita

    はじめに ここ1年ぐらいかけて、Fixという名前のプログラミング言語を作っています。 コアとなる機能の実装がある程度落ち着き、実際にFixを使ってプログラムを書けるようになってきたので、そろそろ言語の紹介をしてみようと思います。 本記事はFixのチュートリアルではなく、どういう思想で設計されていて、どういう特徴を持つ言語なのか、という点を紹介するものです。 意見・提案・助言などをいただけるとうれしいです。 リポジトリはこちらです。 ※ コメントやコミットメッセージは一応拙い英語で書いていますが、日本語でissueを立てたりdiscordで意見・質問してもらっても大丈夫です。 ※ 急いで作った部分もあるため、コンパイラのコードは結構汚いです。ご容赦ください。 現状、Fixをローカルで実行するためにはLLVMのインストールが必要で時間がかかりますが、Fix playgroundを使えばブラウザ

      HaskellとRustを足して2で割ったような関数型言語Fixを作っている話 - Qiita
    • 関数型プログラミングはまずは純粋関数型言語を用いて、考え方から理解しよう

      この記事は、関数型プログラミングはまず考え方から理解しよう の記事を純粋関数型言語Elmで書き換え、一部の文章について批判的に言及させていただいた記事になります。この記事を書こうと思ったきっかけとしては、今回参考にさせていただきた記事が過去に書かれたものにも関わらず、今に渡っても見られていそうなこと。未だにパラダイムの理解に関する誤解が多く散見されること。改めて純粋関数型言語の実用性・有用性について、見直されるべきだと思い、この記事を執筆させていただきました。 次のステップアップ記事は、[超入門] FizzBuzzで考える関数型プログラミング学習を純粋関数型言語でやる理由です。 はじめに、この記事の主張を結論としてまとめておきます。 対比すべきは、関数型プログラミングとオブジェクト指向プログラミングではなく、関数型プログラミングと手続き型プログラミングである 関数型プログラミングの考えを学

        関数型プログラミングはまずは純粋関数型言語を用いて、考え方から理解しよう
      • 40歳から始める関数型言語、OCaml - すぎゃーんメモ

        動機 Why OCaml 学習方法 Real World OCaml Github Copilot と ChatGPT オンラインジャッジ (競プロ) Advent of Code その次? 所感 関数型という概念 OCamlの書き味 Rust, Python の経験 AIとの親和性 まとめ 某Nさんがここ最近Haskellとか勉強してて楽しそうで真似してみたくなって、自分も今さらながら何か関数型言語はじめてみるか〜と周りに相談したところOCamlをオススメされたので 今年に入ってからひたすらOCaml書く練習してる。AtCoder Boot camp for BeginnersのEasy 100をようやく終わらせたところ。 pic.twitter.com/POBWhvHHCn— すぎゃーん💯 (@sugyan) April 9, 2023 大西さんが動画の中で感極まっていたけど、宮川さ

          40歳から始める関数型言語、OCaml - すぎゃーんメモ
        • 直和型の代わりにユニオン型を持つ静的型付け関数型言語 Cotton

          // 割る2をする関数の引数が偶数であることを型によって強制する例(実用性はない) data O // 数字の0を表すデータ型 data S(A) forall { A } // +1を表すデータ型 // 型エイリアス type Nat = O | S[Nat] // 非効率すぎる他倍長整数 type Even = O | S[Odd] type Odd = S[Even] // 偶数を引数にとって2で割った結果を言語組込みの整数として返す関数 div2 : Even -> I64 = // 網羅性チェックつきのパターンマッチ | O => 0 | S(S(n)) => 1 + n.div2 TL;DR ユニオン型は直和型の上位互換である(追記あり)。関数型言語を作るときは直和型の代わりにユニオン型を採用するのもあり。 はじめに Cottonというプログラミング言語を2021年の夏頃から作

            直和型の代わりにユニオン型を持つ静的型付け関数型言語 Cotton
          • 抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】

              抽象度の高い関数型言語プログラミングのスキルを身につけるための書籍が発売/「OCaml」を通じて関数型プログラミングを学べる『関数型言語で学ぶプログラミングの基本』【Book Watch/ニュース】
            • 自作言語の紹介と関数型言語の実装方法の検討

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

                自作言語の紹介と関数型言語の実装方法の検討
              • 関数型言語Elixirのフレームワーク解説書 - mojiru【もじをもじる】

                Elixirへのいざない 「Elixirへのいざない」発行主旨・内容紹介 「Elixirへのいざない」目次 「Elixirへのいざない」Amazonでの購入はこちら 「Elixirへのいざない」楽天市場での購入はこちら Elixirへのいざない インプレスグループで電子出版事業を手がけるインプレスR&Dは、川邑リュウ氏著書による、技術書典や技術書同人誌博覧会をはじめとした各種即売会や、勉強会・LT会などで頒布された技術同人誌を底本とした商業書籍を刊行し、技術同人誌の普及と発展に貢献することを目指し、最新の知見を発信する技術の泉シリーズ2020年6月最新刊として、動的な関数型言語であるElixirのフレームワークであるPhoenix LiveViewとNervesについて、実際にさわって体験をしてみることを主眼とした解説書「Elixirへのいざない」を発売した。 川邑リュウProfile●関

                  関数型言語Elixirのフレームワーク解説書 - mojiru【もじをもじる】
                • 関数型言語初心者にこそおすすめしたい"OCaml"の特徴

                  2019年7月29日、Opt Technologiesが主催するイベント「Fun Fun Functional (2) 関数型言語Lightning Talks!!」が開催されました。関数型プログラミングについて楽しく学び、知見を共有することを目的に開催されている本勉強会。今回は6名のエンジニアが、関数型プログラミング言語にまつわるユニークな発表を行いました。プレゼンテーション「関数型初心者にこそおすすめしたい言語 "OCaml" 」に登壇したのは、cedretaber氏。講演資料はこちら 関数型初心者にこそおすすめしたい言語 "OCaml" cedretaber氏(以下、cedretaber):「関数型初心者にこそおすすめしたい言語 "OCaml"」ということで、またOCamlの話だということになってしまうんですが。 自己紹介、cedretaberと申します。 「ドワンゴから来ました」っ

                    関数型言語初心者にこそおすすめしたい"OCaml"の特徴
                  • 世界のプログラミング言語(27) デキるやつが使ってる『OCaml』は実用的な関数型言語

                    OCamlは関数型言語の一つで、実用性の高さで人気があります。オブジェクト指向や強い静的型付けなどの特徴を持ち、実行速度がC言語並みに速いことも特徴の一つです。筆者の中ではデキるプログラマーが好んで使っているイメージがあります。Microsoftが開発した.NET対応言語のF#をはじめ、多くの言語にも大きな影響を与えました。今回は、OCamlについて紹介します。 OCamlのWebサイト OCamlについて OCamlは、もともとプログラミング言語ML言語の方言の一つです。もともと、「Objective Caml」という名前でしたが、OCamlに改名されました。つまり、OCamlのOはオブジェクト指向のOなのです。1996年にフランスのINRIA(フランス国立研究所)で開発されました。 残念ながら原稿執筆時点では、TIOBE Indexなどの人気プログラミング言語ベスト50にはランクインし

                      世界のプログラミング言語(27) デキるやつが使ってる『OCaml』は実用的な関数型言語
                    • [超入門] FizzBuzzで考える関数型プログラミング学習を純粋関数型言語でやる理由

                      先日、関数型プログラミングはまずは純粋関数型言語を用いて、考え方から理解しよう と言う記事を書かせていただきました。納得の声をたくさん頂きましたが、それでは純粋関数型プログラミング言語を闇雲に初めて勘所がわかった!とはすぐにはならないと思い、順調にステップアップするための記事を書こうと思いました。また、考え方が違うだけで関数型プログラミング言語を学んだり使用する理由は特にないとの意見をいただいたので、改めて実例と共に関数型プログラミング言語を確認していただければなと思います。 今回の記事ではFizzBuzzとElmを利用して解説をしていきたいと思います。FizzBuzzは使い古された例ですが、それ故に誰でもロジックや結果が理解できる、考え方の違いを比べるために十分活用できるため使用させていただきました。Elmはオンラインの実行環境で、誰でも実行・編集が可能であり、構文がシンプルで実用的なも

                        [超入門] FizzBuzzで考える関数型プログラミング学習を純粋関数型言語でやる理由
                      • 世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語

                        Haskellは純粋関数型プログラミング言語です。本連載では既にLispやOCamlなどの関数型言語を紹介しましたが、Haskellは関数型言語の中でも特に人気の高い言語です。Stack Overflowの人気言語調査でも2020年は15位、2021年は22位と人気言語がひしめくなか健闘しています。Haskellは難しい言語としても有名ですが、その作法を学ぶならプログラマーの基礎体力の向上に役立つことでしょう。今回はHaskellを試してみよう。 HaskellのWebサイト Haskellとは Haskellは関数型プログラミング言語の一つです。 純粋関数型言語に分類されます。金融やセキュリティ、科学解析、プログラミング言語の開発などの分野で使われています。総じて信頼性が求められる分野の開発で採用されています。そのため、十分実用的な言語と言えます。 しかし、Haskellには「遅延評価」

                          世界のプログラミング言語(36) 純粋関数型言語Haskellは難しいが学ぶ価値がある言語
                        • 勝又さんは関数型言語を経験するべきと言っているので、結局Scalaをおすすめするしかないと思う - スクラムマスダーの日記

                          エンジニアで、YouTubeで配信もされている勝又健太さんが、「Scalaが日本で衰退し始めている理由を説明します」という動画をアップされました。 僕は、過去、Scalaを少しだけ触ったことがあります。 そのため、以前から、勉強のために、日本でトップレベルのスキルをもつScalaエンジニアの方のTwitterをフォローさせていただいていました。 勝又さんが動画をアップされた日や翌日は、そのScalaエンジニアの方が、いつもとは異なるツイートをされていました。 僕は、少し違う感じ方をしたので、今回ブログに記します。 勝又さんの動画の要約 詳しくは、Youtubeにアップされている動画を確認いただければと思いますが、ざっくり要約すると以下の通りです。 学習コストの高さによる技術的負債の進行 学習コストの高い、関数型言語が日本で普及していないから 一度右肩下がりになった言語は、過去の例を鑑みると

                            勝又さんは関数型言語を経験するべきと言っているので、結局Scalaをおすすめするしかないと思う - スクラムマスダーの日記
                          • 週刊Railsウォッチ(20210202後編)Ruby 3 irbのmeasureコマンド、テストを関数型言語のマインドセットで考えるほか|TechRacho by BPS株式会社

                            同記事より 修正結果: Change TrueType subsetter to avoid generating characters that need to… · gettalong/hexapdf@cdb8723 「Rubyコードが遅い原因を突き止めて解決するまでの泥臭くてつらい作業をまとめた、いい記事だと思います👍」「こういう作業をやれる人がチームにいるかどうかで、チームの限界性能が変わってきますよね」「たしかに」 「この記事ではHexaPDFの文字glyphを処理する周辺の効率化を行っているみたい」「つくづく、プログラマーはいろんなことを知らないといけないんだなと改めて思いますね」「PDFの仕様を以前読んだことありますけど、あれはホントわからない」「ホントに😆」 参考: TrueType - Wikipedia 参考: PDFテクノロジーセンター | Adobe PDFテク

                              週刊Railsウォッチ(20210202後編)Ruby 3 irbのmeasureコマンド、テストを関数型言語のマインドセットで考えるほか|TechRacho by BPS株式会社
                            • 関数型言語の実装のチュートリアル - 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
                              • TypeScript(JavaScript)で関数型言語の機能をつまみ食いする - Qiita

                                関数型言語のことなんて知らなくても、ただそこに便利な関数があるので使っていきましょうというお話です。 LodashやRamdaには、リスト操作やオブジェクト操作に関する便利な関数がたくさんあります。 ["a", "b"] と [1, 2] から { a: 1, b: 2 } を作る処理を思い浮かべてください。 何も知らなければforループを使って書いたりしそうですが、_.zipObjectやR.zipObjを知っていればこれを使うだけでできてしまいます。 以下で、Clojureのclojure.coreにあるよく使う関数を中心に、Lodash, Ramdaを使ったときにどうやって実現できるのか調べてみました。 調べてみた感想としては以下のとおりです。 JavaScript標準の関数ではまだまだ不足している部分が多く、LodashとRamdaは一長一短 Lodashは副作用がある関数(対象オ

                                  TypeScript(JavaScript)で関数型言語の機能をつまみ食いする - Qiita
                                • Common Lispを静的型付けの関数型言語にするCoaltonの紹介

                                  Lisp Advent Calendar 2023 - Adventar の11日目の記事です。 Common Lisp を静的型付けの関数型言語にするライブラリである Coalton を紹介します。 まだバージョン1.0には達していない状況ですが、 活発に開発が進められていて確実に完成度が上がっている期待度の高いプロジェクトです。 この記事では主に Coalton を採用すると得られるメリットや、 マクロ、Common Lisp との相互運用などの気になる点をピックアップして紹介します。 Coalton は Common Lisp を静的型付けの秀逸な型システムをもった関数型言語に拡張するライブラリです。 Coalton は他の通常の Common Lisp のライブラリと同じ方法で導入でき、 asdf で読み込むだけで簡単に使えます。 Coalton は他の Common Lisp の

                                    Common Lispを静的型付けの関数型言語にするCoaltonの紹介
                                  • 関数型言語とは何か?(Haskellで学ぶ)

                                    「関数型言語とは何か?」について解説します。「オブジェクト指向の複雑さを軽減する」として関数型言語は近年注目を集めています。しかし「関数を中心にプログラムを組み立てる」といっても、具体的なイメージができない方も多いのではないでしょうか。 本書では「強い制約を課して、本来すべきことに集中する」という視点から関数型言語の概要を紹介します。「変数の値を後から変更できない・副作用を禁止する」など、関数型プログラミングならではの特徴を学んでいきましょう。

                                      関数型言語とは何か?(Haskellで学ぶ)
                                    • まろ@関数型言語作曲機械学習勉強してない on Twitter: "いやいやいや、12歳未満はワクチン受けられないのに人口の75%が摂取済みなわけないじゃん…と思ったら12歳未満って1000万人しかいなかった…"

                                      いやいやいや、12歳未満はワクチン受けられないのに人口の75%が摂取済みなわけないじゃん…と思ったら12歳未満って1000万人しかいなかった…

                                        まろ@関数型言語作曲機械学習勉強してない on Twitter: "いやいやいや、12歳未満はワクチン受けられないのに人口の75%が摂取済みなわけないじゃん…と思ったら12歳未満って1000万人しかいなかった…"
                                      • 論理学入門 II -- ラムダ計算と関数型言語 | MaruLabo

                                        2020/03/27 マルゼミ「論理学 II」概要 「論理学 I」との関係について 前回の「論理学 I — 命題論理の演繹ルール」では、「推論する能力」の最も基本的な基礎である、論理的推論ルールにフォーカスしました。今回の対象は、数学的推論の基礎で、前回のセミナーの内容を前提とはしていません。前回のセミナーを受講していない人も、独立の内容として理解できると思います。「論理学 I」と今回の「論理学 II」で別々に展開してきた、論理的推論と数学的推論の接点については、次回の「論理学 III -- 型の理論」(「型の理論」入門に改題しました)で統一的に扱う予定です。 型のないラムダ計算 今回のセミナーで最初に学ぶのは、1930年代にチャーチが定式化した、「型のないラムダ計算」です。 基本的には、「引数」に対して値を返すものとして「関数」を捉えて、関数で表された式に対する「代入」と式の「変形」を、

                                          論理学入門 II -- ラムダ計算と関数型言語 | MaruLabo
                                        • 関数型言語のコンパイラバックエンド「SaberVM」が発表

                                          CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

                                            関数型言語のコンパイラバックエンド「SaberVM」が発表
                                          • Ruby 2.7が公開、関数型言語で広く使われているパターンマッチ機能などを追加

                                            Ruby開発チームは2019年12月25日、オープンソースのオブジェクト指向スクリプト言語「Ruby」の最新安定版「Ruby 2.7.0」をリリースしたと発表した。 Ruby 2.7.0では多くの新機能を追加し、パフォーマンスを改善した。主な改良点は次の通り。 パターンマッチ機能を導入 関数型言語で広く使われているパターンマッチ機能を実験的に導入した。これにより、渡されたオブジェクトの構造がパターンと一致するかどうかを調べ、一致した場合にその値を変数に代入するといったコードを記述しやすくなった。 require "json" json = <<END { "name": "Alice", "age": 30, "children": [{ "name": "Bob", "age": 2 }] } END case JSON.parse(json, symbolize_names: true

                                              Ruby 2.7が公開、関数型言語で広く使われているパターンマッチ機能などを追加
                                            • 関数型言語で学ぶプログラミングの基本 | インプレス NextPublishing

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

                                                関数型言語で学ぶプログラミングの基本 | インプレス NextPublishing
                                              • まろ@関数型言語作曲機械学習勉強してない on Twitter: "セブンイレブンのコーヒー、セルフサービスであまりにも間違えてボタンを押す人が多いからか、「アイスコーヒー→」「↑カフェオレ」などお店がシールを貼るUIの敗北の典型のような状態だったが、とうとうセブンイレブン本社が本気出してきた… https://t.co/XGgep9LPqD"

                                                セブンイレブンのコーヒー、セルフサービスであまりにも間違えてボタンを押す人が多いからか、「アイスコーヒー→」「↑カフェオレ」などお店がシールを貼るUIの敗北の典型のような状態だったが、とうとうセブンイレブン本社が本気出してきた… https://t.co/XGgep9LPqD

                                                  まろ@関数型言語作曲機械学習勉強してない on Twitter: "セブンイレブンのコーヒー、セルフサービスであまりにも間違えてボタンを押す人が多いからか、「アイスコーヒー→」「↑カフェオレ」などお店がシールを貼るUIの敗北の典型のような状態だったが、とうとうセブンイレブン本社が本気出してきた… https://t.co/XGgep9LPqD"
                                                • wasm GC Proposalのために作られた実験的な関数型言語処理系Wamlが面白そう - Arantium Maestum

                                                  自分で実装している型システムに再帰型をつけたくてiso-recursive typesで検索していたらwasm garbage collectorのGitHubレポジトリで行われている侃侃諤諤な議論を見つけて読み漁っていた。 その中で見つけたのがwasmの中心的な人物であるAndreas RossbergがwasmのGC proposalを試すために書いた実験的なコンパイラWaml: github.com Rossbergはwasmのreference interpreterを実装したりしている。ML界隈ではF-ing Modulesや1MLなどのモジュール関連の研究やstandardにできるだけ忠実なSMLのレファレンス実装HaMLetなどで有名。 このWamlはwasmのGC proposalがちゃんとした言語処理系のコンパイル先として必要な機能を備えているか評価するために、できるだけ

                                                    wasm GC Proposalのために作られた実験的な関数型言語処理系Wamlが面白そう - Arantium Maestum
                                                  • なぜ関数型言語の関数は必ず値を返すのか - Qiita

                                                    まあ文献を参照したわけでもない自己流解釈なので間違ってても責任は持てません。 きっかけのツイート F#のunitってC#のvoidと同じく戻り値がないことを意味するのかと思ってた。 けどunitという値が返るから厳密には違うらしい。 scalaもunit使うし関数型言語はそういうものなのかな?(´ω`) — のさ_AWSとFlutter学習中 (@nosa_programmer) March 16, 2019 ユーザー定義関数などなかった時代 初期のFORTRANやBASICではCPUのCall命令などで呼ばれるサブルーチンの扱いは大まかにこんな風に分かれていた。 ステートメント ファイルやコンソールの入出力など。組み込み命令で値を返さない。結果を受け取るものは格納先のバッファや変数を引数として渡す ユーザー定義サブルーチン 任意のコード。引数や返り値はないのでデータのやりとりはグローバル

                                                      なぜ関数型言語の関数は必ず値を返すのか - Qiita
                                                    • 関数型言語”兼”定理証明支援系Leanの環境構築

                                                      Leanとは Leanは普通の関数型言語であり、なおかつ定理証明支援系でもある大変パワフルな言語です。つまり原理上実行前にわかる性質は、型に埋め込んだり、頑張って自分で証明したりすることができます。そう考えるとワクワクしてきますね! またコンパイラフロントエンドのAPIを自由にユーザーが使えるので、標準の文法や意味論とまったく同じレベルで自分の拡張を安全に仕込むことができるという、強力な拡張性を持つおもしろい言語でもあります。 今回紹介するLeanの環境構築は、lean4とよばれているバージョンのもので、lean3という古いバージョンとは異なります。 elan 開発環境の構築にはLean Manualのセットアップにしたがって、開発環境管理コマンドであるelanのインストールから始めます。 curl https://raw.githubusercontent.com/leanprover/

                                                        関数型言語”兼”定理証明支援系Leanの環境構築
                                                      1