並び順

ブックマーク数

期間指定

  • から
  • まで

361 - 400 件 / 1316件

新着順 人気順

haskellの検索結果361 - 400 件 / 1316件

  • Haskellの例外処理事情 - Qiita

    Haskellを使うたびに例外について調べ直す癖がついているので、諸々をまとめておく。 TL;DR 部分関数を使うな。 失敗可能性はMaybe?Either?IO? -> 迷ったらMonadThrowを使え。 予めエラー型を統一しないと例外処理クソだるいんだけど -> SomeExceptionを使え。 ライブラリどれ使えばいいの? -> safe-exceptionsを使え。 部分関数を使うな 死の化身。部分関数自体を避けるしか方法はない。用意された部分関数を使う場合は必ずラップすること。 パターンマッチの失敗やundefined, error等のピュアな文脈での例外は、IOモナドの中でのみキャッチすることができる。しかし、ピュアな文脈で解決できる問題を神モナドで解決するのはあまり嬉しくない。ピュアなものはピュアなものに、神のものは神に返すべきである。 もし失敗をどの型で表すのか迷ったら

      Haskellの例外処理事情 - Qiita
    • LLVM の Kaleidoscope を育てながら作る - Qiita

      この記事は言語実装 Advent Calendar 2020 3日目の記事です。前回は sisshiki1969 さんの「ruruby: RustでつくっているRuby」、次回は yharaさんの「Shiika進捗」です。 趣旨 LLVM を使って小さな言語を実装してみます。 方針としては、最小限の機能の言語から出発して動くものを少しづつ大きくしていきます。ゴールは LLVM 公式のチュートリアルである Kaleidoscope の序盤相当の部分で、次のプログラムが動くことを目標とします。 def fib(n) if n < 3 then 1 else fib(n-1) + fib(n-2); fib(10) #=> 55 想定する読者 LLVM や LLVM IR がどういうものか何となく知っている Haskell がなんとなく分かる ただしコードにはコメントを入れて、LLVM IR や

        LLVM の Kaleidoscope を育てながら作る - Qiita
      • OKRからエンジニアのキャリアまで。プログラミングの楽しみを求めて | DevLounge.jp Session A-2 レポート | Wantedly, Inc.

        エンジニアリング界をリードする著名人が「いま話を聞きたい」開発者を直接指名し、日頃なかなか聞けない開発トピックについて語り尽くすオンライントークセッション「DevLounge.jp」。 Session A-2では、グローバルなクラウドプラットフォームのデベロッパーアドボケイトとして活躍する山口 能迪氏が、日頃から飲みながら雑多な話をする相手だというヘイ株式会社CTO、藤村大介氏を招いて、「技術に寄りすぎない話」を展開。山口氏が最近気になっているというOKR(目標管理手法)の話から始まり、やがて藤村氏のフリーランスから社員となってCTOという立場に就いた話、哲学とソフトウェア開発の関連性の話まで、話題は尽きず。ここではそんなトークセッションの一部をダイジェストでお届けします。 山口 能迪グローバルなクラウドプラットフォームのデベロッパーアドボケイトとして、ウェブからネイティブ、フロントエンド

          OKRからエンジニアのキャリアまで。プログラミングの楽しみを求めて | DevLounge.jp Session A-2 レポート | Wantedly, Inc.
        • みんながいるから続けられる。続けられるから成長できる。プログラミング力を磨く部活動のご紹介 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」

          開発部門(基盤本部)でエンジニア育成を担当している高玉です。 BIGLOBEには登山部、麻雀部、ツーリングクラブなど様々な部活があります。今日はインドア派の部活、プロコン部についてご紹介します。 プロコン部とは ゆるくて多様なプロコン部 みんながいるから続けられる みんなのコードをチラ見せ コードゴルフ感ただようPython v.s. Rust ワンライナー F# JavaScriptで多倍長整数を扱う、だと!? まとめ プロコン部とは プロコンってご存知ですか? ここでいうプロコンは、ゲーム機用のProコントローラーでも、良い点(Pros)・悪い点(Cons)を列挙するのでもありません。「競技プログラミングコンテスト」の略です。 プログラミングコンテストとは、プログラミングの技術を競い合うイベントです。参加者にお題が出題されるので、そのお題を解くプログラムを制限時間内に提出します。 プロ

            みんながいるから続けられる。続けられるから成長できる。プログラミング力を磨く部活動のご紹介 - BIGLOBE Style | BIGLOBEの「はたらく人」と「トガッた技術」
          • Reddit で振り返る今年の英語圏 Haskell 界隈の話題 - Qiita

            Haskel advent calendar 2023 の1日めの記事です. お仕事も情報系でなく,多忙を言い訳に数年ほとんどコード自体をかけていなかったのですが,最近 e-Gov 法令検索 で公開されている法令XMLを読みたい需要があって久しぶりに Haskell で書いてみたらやはり書きやすく,とても楽しくて改めて感動しました.書きながら自然に思考が整理される感じがよい. Hoogle は変わらぬ使いやすさでモリモリサポートしてくれるし,環境構築も GHCup などが噛み合って随分スムーズで,Haskell Language Server も成熟してきているようです.環境構築については,昨年の Advent Calendar の1日め @mod_poppo さんの記事 などが参考になります. 最近入った言語拡張にも,ちょっとだけコード書く位でも(大規模なあるいは高度なコードじゃなくても

              Reddit で振り返る今年の英語圏 Haskell 界隈の話題 - Qiita
            • syntaxdesign

              One of the most recognizable features of a languages is its syntax. What are some of the things about syntax that matter? What questions might you ask if you were creating a syntax for your own language? Motivation A programming language gives us a way structure our thoughts. Each program, has a kind of internal structure, for example: How can we capture this structure? One way is directly, via pi

              • Slack の スラッシュコマンドを Lambda 上の Haskell で書いてみる - Qiita

                Slack のスラッシュコマンドを、API Gateway を介した Lambda 上の Haskell プログラムとして実装するやりかた。 動機 使えるところからちょっとずつ使って、Haskell とか関数型プログラミングとかの適用範囲をじわじわ広げていきたい。 お題 /f-to-c [文字列] と入力すると、文字列部分を華氏温度と解釈して、それを摂氏に変換した数値を返すスラッシュコマンドを定義してみる。[文字列]を指定していなかったり、数値に解釈できないものが入っていたりすると、エラーメッセージが返るようにもする。 実務上の応用としては、例えば、プログラマなら手元の REPL 上でのちょっとした計算や採番で導出できる ID などを、非プログラマのチームメンバーでも Slack で簡単なコマンドを叩けば必要な結果が得られるような簡単な ChatOps がある。もちろん頑張れば外部システム

                  Slack の スラッシュコマンドを Lambda 上の Haskell で書いてみる - Qiita
                • おすすめHaskellプロジェクト作成方法(ほぼ)2021年版

                  はじめに (あともう少しで)あけましておめでとうございます。 この記事では2020年12月31日時点での私のおすすめの最新のHaskellプロジェクトの作成方法をまとめます。 Haskellの環境構築はstackを使うものとcabalを使うものの2種類があります。 歴史的にはcabalの不便さを改善したのがstackですが、現在はcabalも進化して 不便さは大幅に解消されているため、筆者の好みでcabalによる環境構築をまとめます。 ツールのインストール ghcup ghcupはGHCとcabalとHLSをバージョン管理してくれるインストーラです。 インストールガイド を参考にインストールしてください。 バージョン確認 ghcupをインストールしたら $ ghcup list Tool Version Tags Notes ✗ ghc 7.10.3 base-4.8.2.0 ✗ ghc

                    おすすめHaskellプロジェクト作成方法(ほぼ)2021年版
                  • Tree-sitter|Introduction

                    ☰ Introduction Tree-sitter is a parser generator tool and an incremental parsing library. It can build a concrete syntax tree for a source file and efficiently update the syntax tree as the source file is edited. Tree-sitter aims to be: General enough to parse any programming language Fast enough to parse on every keystroke in a text editor Robust enough to provide useful results even in the prese

                    • AST を拡張しよう

                      はじめに 実験的な内容です。(@fumievalさん, @matsubara0507さん、アドバイスありがとうございました) モチベーション まずは、以下のような型 Expr と関数 pretty が定義されているとします。 data Expr = Constant Int | Add Expr Expr deriving (Eq, Show) pretty :: Expr -> String pretty (Constant i) = show i pretty (Add e1 e2) = pretty e1 <> " + " <> pretty e2

                      • Temporal Dead Zone と採用されなかった他の候補について

                        Temporal Dead Zone とは ECMAScript 2015で採用された let/const のスコーピングの仕様をTemporal Dead Zoneと呼びます。 const x = "outer"; { const f = () => x; // console.log(f()); // => Error const x = "inner"; console.log(f()); // => "inner" } 4つの方式 Temporal Dead Zone という名前は、ブロックスコープ変数の挙動を決める際の4つの候補の名前に由来しているようです。 これはECMAScript 4が放棄されて間もない2008年10月のes-discussのログ[1]に言及があります。 A1. Lexical dead zone. References textually prior to

                          Temporal Dead Zone と採用されなかった他の候補について
                        • Haskellの文字列型:分類と特徴 - Qiita

                          Haskellの文字列型について Haskellの文字列型には色々あります。標準の String のほかに Text や ByteString があり、Text と ByteString はそれぞれstrictとlazyの2種類ずつあります。 Haskellを学びたての方はこれを知ると「なんでこんなに色々あるんだ?Haskellはクソなのか?」と思われるかもしれません。 ですが、それぞれの文字列型にはちゃんと存在意義があります (まあ String は標準であること以外取り柄のないクソですが……)。この記事ではそれぞれの型の特徴と使いどころを解説します。 ここで説明する対象は、主に以下の型です。 String Text 系 strict Text (textパッケージ) lazy Text (同上) ShortText (text-shortパッケージ) ByteString 系(byte

                            Haskellの文字列型:分類と特徴 - Qiita
                          • Haskellの型システム(+拡張)を実装して学ぶ

                            導入 Mark P. Jones: Typing Haskell in Haskellという論文があります。この論文は、題通りHaskellでHaskellの型チェッカを実装するというものです。詳細な解説がされており非常にわかりやすく、また型システムの体系的な知識が無くても理解できるように構成されています。 しかしながら、この論文にはソースコードを入力にとって型チェックを行うまでに必要な実装の全ては含まれておらず、プログラムを入力に取って動作させるまでにはいくつかの変換や解析が必要です。Titan Type Checkerは、これら不足している機能(+拡張)を実装し、実際にスタンドアロンに動作する型チェッカを実装したものです。本記事では、論文で解説されていない事柄を中心に振り返りたいと思います。 Typing Haskell in Haskellの動作まで 構文解析 (Parser.hs)

                              Haskellの型システム(+拡張)を実装して学ぶ
                            • プログラング言語Idrisに入門させたい(v0.9)

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

                                プログラング言語Idrisに入門させたい(v0.9)
                              • 各言語の非同期処理の仕組みまとめ - Qiita

                                はじめに 非同期処理はアプリケーション開発においてほぼ必須となっていますが、プログラミング言語やライブラリによってその実現方法は大きく異なります。 この記事では、以下の言語における非同期処理の実現方法を調査し、分類した結果をまとめたものです。 JavaScript/TypeScript(Promise) Kotlin(Coroutines) Java(Reactor Core/Completable Future) Python(asyncio) Golang(goroutine/conc) Haskell(async) Rust(tokio) 非同期処理の分類 構文 async/await 採用している言語: JavaScript/TypeScript/Python/Kotlin/Haskell/Rust もっとも代表的な非同期処理の構文です。 asyncとawaitという対になる二つの

                                  各言語の非同期処理の仕組みまとめ - Qiita
                                • 機械学習×名古屋×Julia Juliaとの出会いとこれまでにやってきたこと Part1

                                  2018年10月20日、第8回目となるイベント「JuliaTokyo」が開催されました。技術計算を得意とする新しい汎用プログラミング言語であるJulia。その知見と共有しJuliaの普及を促すため、実際にJuliaを用いているエンジニアたちが一堂に会し、自身の事例を語りました。プレゼンテーション「機械学習×名古屋×Julia 」に登場したのは、antimon2氏。講演資料はこちら 機械学習×名古屋×Julia antimon2氏:では始めます。仮で「機械学習と名古屋とJulia」っていう名前で送っていて、「と」が「×」に変わっただけですが、正式に「機械学習×名古屋×Julia」というタイトルで発表を進めていきます。 今日話す内容はだいたいこんな感じです。自分のこと、あと機械学習、実際にどういうふうなのかを順番に話していきます。 まずは私のことなんですけど、「私×Julia」というか「お前誰

                                    機械学習×名古屋×Julia Juliaとの出会いとこれまでにやってきたこと Part1
                                  • 型クラスのご紹介 - molecular coordinates

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

                                      型クラスのご紹介 - molecular coordinates
                                    • GitHub - woltapp/blurhash: A very compact representation of a placeholder for an image.

                                      BlurHash BlurHash is a compact representation of a placeholder for an image. Why would you want this? Does your designer cry every time you load their beautifully designed screen, and it is full of empty boxes because all the images have not loaded yet? Does your database engineer cry when you want to solve this by trying to cram little thumbnail images into your data to show as placeholders? Blur

                                        GitHub - woltapp/blurhash: A very compact representation of a placeholder for an image.
                                      • TypeScript で次元つきの物理量を安全に扱う - Object.create(null)

                                        キーワード: 型レベル整数, 幽霊型 前回の記事の予告通り, TypeScript 4.0 で次元つきの物理量の計算を安全に行うためのライブラリを作ってみました. ただし現状では PoC で, 実用に足るかまでは考慮していません. github.com 物理量についての計算を行う場合, その次元や単位系には特に注意を払う必要があります. 次元の違う値同士 (例えば質量と長さ) の足し算には意味がありませんし, 単位系の違う値同士の計算は誤った結果を導いてしまいます (火星探査機の事故が有名ですね). こういった次元や単位系の取り違えを型システムを使って静的に検出する手法については, Haskell のような型システムが比較的高機能な言語においていくつか先行事例があります (例: dimensional, units). 今回作ったものは, 同様のことを TypeScript でも実現できな

                                          TypeScript で次元つきの物理量を安全に扱う - Object.create(null)
                                        • Algebraic EffectsとExtensible Effectsの違いってなんや? 関係あんの?

                                          1. はじめに 最近のエフェクトシステム2大ホットトピックといえばAlgebraic EffectsとExtensible Effectsだろう [要出典]。 度々この2つの違いは何なのかという質問を見ます。 比較というわけでも無いんですが、今回はこの2つを並べて見比べてみましょう。 そいうえばだいぶ前の発表でこんなこと言ってましたけど 本当かしら 2. Algebraic Effects and Handlers PlotkinとPowerによりもたらされた、計算エフェクトを代数的に表現するという考え方[1]に、PlotkinとPretnarがハンドラを追加したもの[2]である。 詳細はカツアイしますんで、本ブログをご巡回ください。 簡単にまとめると、 新たな言語機能 エフェクト(仕様)とハンドラ(実装)が分離できるモジュラーな手法 エフェクトシステムによって計算中にどのようなエフェクト

                                            Algebraic EffectsとExtensible Effectsの違いってなんや? 関係あんの?
                                          • 随伴を使って理解するStateモナドの実装

                                            前回の記事は魔法のように見えるStateモナドの実装も、順を追って見ていけば理解することは難しくないという話でした。 しかし状態の変更を順番に処理するというような手続き的な考え方にかなり近い構造が、うまくモナドになってくれるというのは少し不思議ですよね。 この記事では タプル (a, b) 関数 a -> b カリー化 curry :: ((a, b) -> c) -> a -> b -> c uncurry :: (a -> b -> c) -> (a, b) -> c といったHaskellの基本的な要素が随伴と呼ばれる関係を構成することを見て、 その随伴からStateモナドが導かれることを説明していきたいと思います。 随伴 二つの圏 C, D と二つの関手 F : C \rightarrow D, G : D \rightarrow C が与えられたとしましょう。 もし GF = {

                                              随伴を使って理解するStateモナドの実装
                                            • CodeGen: Semantic's improved language support system

                                              EngineeringOpen SourceCodeGen: Semantic’s improved language support systemThe Semantic Code team shipped a massive improvement to the language support system that powers code navigation. Code navigation features only scratch the surface of possibilities that start to open up when we combine Semantic‘s program analysis potential with GitHub’s scale. The Semantic Code team shipped a massive improvem

                                                CodeGen: Semantic's improved language support system
                                              • HaskellでS3にファイルアップロードしてみた | DevelopersIO

                                                はじめに あけましておめでとうございます。CX事業本部の吉川です。 年末年始連休は全体的にダラダラとした寝正月を過ごしていましたが、ちょっとくらい何かやろうということで自由研究として「Haskell+AWS」に取り組んでみました。 ずっとHaskellに興味があり、すごいH本と『入門Haskellプログラミング』は買ったのですが、すっかり積んでしまっていました。 そんなわけで、勉強しようしようと思いつつ手を出せていなかったのでこの機会にえいやで始めました。 今回は手頃なところでS3へのファイルアップロードを行います。 GitHubリポジトリ まずは完成物から。 stack run でS3バケットに10MBと100MBのダミーファイルをアップロードします。 https://github.com/dyoshikawa/amazonka-s3-playground S3バケットとIAMユーザ作成

                                                  HaskellでS3にファイルアップロードしてみた | DevelopersIO
                                                • Why Rust is the most admired language among developers

                                                  EngineeringWhy Rust is the most admired language among developersRust continues to top the charts as the most admired and desired language by developers, and in this post, we dive a little deeper into how (and why) Rust is stealing the hearts of developers around the world. For the eighth year in a row, Rust has topped the chart as “the most desired programming language” in Stack Overflow’s annual

                                                    Why Rust is the most admired language among developers
                                                  • Rust 2021: GUI

                                                    This is a response to the Rust call for blogs 2021 and also a followup to last year’s entry. It will be entirely focused on GUI. There is considerable interest in GUI toolkits for Rust. As one data point, it was the 6th highest rated challenge for adoption in the 2019 Rust survey, just behind async I/O. There is also a fair amount of activity towards this goal, though as a community it still feels

                                                    • 開発品質とDeveloper eXperienceを高めるコンテナ開発環境のご紹介 (Python) - ABEJA Tech Blog

                                                      はじめに こんにちは 2023年1月に入社し、システム開発グループでエンジニアをしてる春名です。 私の所属しているシステム開発グループでは、開発初期の環境構築をより効率的に行うための活動に取り組んでいます。 今回はそのうちの一つである、Pythonでコンテナ開発をする環境を構築した内容をご紹介します。 なぜコンテナ開発環境かと言いますと、単にAWSのECSやGoogle CloudのCloud Runを使ってデリバリーする案件が多いからです。 より使用頻度の高い開発環境を整備し、テンプレート化しておくことで開発の効率化に活用しています。 目次 はじめに 目次 今回作成する環境 Poetryによるプロジェクトの作成 Poetryのインストール プロジェクトの作成 poetryの設定 .gitignoreの作成 依存関係の追加 FastAPI Ruff / Black / mypy / pyt

                                                        開発品質とDeveloper eXperienceを高めるコンテナ開発環境のご紹介 (Python) - ABEJA Tech Blog
                                                      • Beyond Functional Programming: The Verse Programming Language

                                                        Simon Peyton Jones, Tim Sweeney Lennart Augustsson, Koen Claessen, Ranjit Jhala, Olin Shivers Epic Games December 2022 Tim’s vision of the metaverse  Social interaction in a shared real-time 3D simulation  An open economy with rules but no corporate overlord  A creation platform open to all programmers, artists, and designers, not a walled garden  Much more than a collection of separately comp

                                                        • Guardian で巨大 Haskell レポジトリの依存関係を正気に保つ

                                                          TL;DR 巨大なモノレポはパッケージ間の依存関係に気を付けないと、変更が思わぬ所に波及して保守が大変だって? DeepFlow 株式会社製ツール guardian を使って、Haskell モノレポのパッケージ間の依存関係が抽象化や意味論的な境界を侵犯していないかチェックしよう! この度 OSS 化したので、巨大 Haskell モノレポの依存関係管理に困っている皆さんは是非試してみてください。 GitHub Action もあるよ。 はじめに - 巨大モノレポを保守する悲しみ 大量のパッケージから成るモノレポ[1]を管理するのが大変だというのは、あらゆる言語で共通の悩みであろうと思われる[2]。 こうしたモノレポというのは、「CIで全部ビルドできるようにしておく」というだけでは不十分で、ある箇所への変更が必要以上の部分のリビルドを惹き起こさないようにしないと、開発サイクルが全然回らずに

                                                            Guardian で巨大 Haskell レポジトリの依存関係を正気に保つ
                                                          • 3D Model in Haskell

                                                            3D Model in Haskell Haskellで3Dモデルに触れる

                                                              3D Model in Haskell
                                                            • Learn, improve and generate code with AI | Refraction

                                                              with AIRefraction is a code generation tool for developers. It uses AI to generate code for you. You can use it to generate unit tests, documentation, refactor code and more. Generate code in Generate code using AI in 56 languages — ABAP, Ada, Apex, Assembly, Batch, C, C#, C++, CameLIGO, Clojure, Cobol, CoffeeScript, CSS, D Lang, Dart, Elixir, Erlang, F#, Fortran, Go, GraphQL, Groovy, Handlebars,

                                                                Learn, improve and generate code with AI | Refraction
                                                              • プログラミングHaskell第2版を翻訳しました - あどけない話

                                                                プログラミングHaskell第2版の翻訳とレビューが完了し、ラムダノートから発売されました。レビューしてくださった5名の方に、改めてお礼を申し上げたいと思います。閉じられたissueは177個ですが、複数の指摘を含むissueもあるので、大雑把に言って250箇所ぐらいは改善されたのだと思います。 初版を買ってない方や、これからHaskellに入門したい人には、手放しでお勧めできます。この記事では、初版を持っているけど、第2版を買うべきか迷っている人に、どこが変わったのか説明します。 書体 コードが数学風の書体から、ブロック体になりました。Haskellに関する論文は、数学風の書体を使う伝統があって初版で採用されていましたが、これが一番不評でした。第2版では、奇を衒らわずに普通になりましたので、安心して読めると思います。 利用するシステム 利用するシステムが、HugsからGHCになりました。

                                                                  プログラミングHaskell第2版を翻訳しました - あどけない話
                                                                • Lambda Calculus in 383 Bytes

                                                                  The Lambda Calculus is a programming language with a single keyword. It's the Turing tarpit discovered by Turing's doctoral advisor. This blog post introduces a brand new 383 byte implementation of binary lambda calculus as an x86-64 Linux ELF executable. Friendly portable C code and prebuilt APE binaries are provided for other platforms too. SectorLambda implements a Church-Krivine-Tromp virtual

                                                                  • Haskellと余代数(Coalgebra) - 朝日ネット 技術者ブログ

                                                                    ここではHaskellの中級者向けのトピックを簡単に取り上げたいと思います。 今回は余代数(Coalgebra)についてです。Haskellを書いていると『余(なんとか)』という言葉をみかけることがあります。これは英語の接頭辞 Co- の訳で、ここでは代数(Algebra)の双対(Dual)という意味で余代数と呼ばれています。 さてHaskellやOCamlのデータ型は一般に代数的データ型(Algebraic data type)と呼ばれます。このデータ型にパターンマッチングを加えて、(オブジェクト指向言語などと比較したときの)関数型言語の特徴と紹介されることも多いと思います。実はこのデータ型にはもともと余データ(Codata)と呼ばれるような相方がいたのですが、人類が扱うには早すぎたのか、データ型に比べると余データは長らく影の存在でありました(ちなみに余データは口語上はコデータと呼ぶかも

                                                                      Haskellと余代数(Coalgebra) - 朝日ネット 技術者ブログ
                                                                    • 今日は Haskell Day 2019 の日です - 北海道苫小牧市出身の初老PGが書くブログ

                                                                      咳が止まらない状態で非常に厳しいですが、来ていますので、自分用のメモを残しておきます。 関数型(function type)を見つめるプログラミング / 山下さん 関数の型、 Haskell では第一級 リスト型 a が型なら [a] も型 タプル a b が型なら (a, b) も型 タプル a b が型なら a -> b も型 a が domain 、 b が codomain 高階関数型 domain が関数 (a -> b) -> c codomain が関数 a -> (b -> c) こちらは意識されにくい 2変数関数 (a, b) -> c Haskell 以外でもよく使う セクション (+) は高階関数 a が domain、 b が codomain 逆に、 codomain が関数の高階関数は 2 項演算子 f: a -> a -> a `f` curry :: ((a

                                                                        今日は Haskell Day 2019 の日です - 北海道苫小牧市出身の初老PGが書くブログ
                                                                      • GitHub - graninas/functional-declarative-design-methodology: Article: Functional Declarative Design

                                                                        Statically-typed functional languages boast numerous merits, such as robust type safety, immutability, and expressive syntax, but these can also pose challenges when designing software that effectively solves intricate problems and scales over time. While Object-Oriented Design (OOD) [1] has proven useful in structuring code in its domain, it does not always align with the functional programming p

                                                                          GitHub - graninas/functional-declarative-design-methodology: Article: Functional Declarative Design
                                                                        • Clojureの設計に見る"simple"という考え方 Simple Made Easyを解説 Part2

                                                                          2019年7月29日、Opt Technologiesが主催するイベント「Fun Fun Functional (2) 関数型言語Lightning Talks!!」が開催されました。関数型プログラミングについて楽しく学び、知見を共有することを目的に開催されている本勉強会。今回は6名のエンジニアが、関数型プログラミング言語にまつわるユニークな発表を行いました。プレゼンテーション「"Simple Made Easy" Made Easy 」に登壇したのは、lagenorhynque氏。講演資料はこちら なぜ"simple"を重視するのか なぜsimpleが大事なのかと言うと、人間には限界があるからです。わけがわからないものに対して信頼ができないので理解をしながら進める必要がありますし、能力的に普通の人は5個ぐらいはできても、10個や20個のものは同時に考えられません。なので、絡まったものを一

                                                                            Clojureの設計に見る"simple"という考え方 Simple Made Easyを解説 Part2
                                                                          • GHCの型レベル自然数を理解する - Qiita

                                                                            Haskellの多相型システムでは、型をパラメーターとして取る型を定義することができる。この拡張として、GHC拡張の型レベル自然数を使うと、自然数をパラメーターとしてとる型を定義することができる。 型レベル自然数を使うには、GHC拡張の DataKinds を有効にして、 GHC.TypeLits モジュール(もしくは GHC.TypeNats モジュール)をimportする。 この記事で説明するのは基本的に、GHC組み込みの Nat カインドを持つ型レベル自然数である。データ型として帰納的に定義される自然数については、比較のために紹介する程度にとどめる。 初級編 まずは、型レベル自然数の基本的な使い方を紹介する。 雰囲気を掴む 小難しい話に入る前に、GHCの型レベル自然数の雰囲気を見ておこう。 {-# LANGUAGE DataKinds #-} {-# LANGUAGE ScopedT

                                                                              GHCの型レベル自然数を理解する - Qiita
                                                                            • Kalyn: a self-hosting compiler for x86-64

                                                                              Over the course of my Spring 2020 semester at Harvey Mudd College, I developed a self-hosting compiler entirely from scratch. This article walks through many interesting parts of the project. It’s laid out so you can just read from beginning to end, but if you’re more interested in a particular topic, feel free to jump there. Or, take a look at the project on GitHub. Table of contents What the pro

                                                                              • GHCに初めてコントリビュートした/最近のGHC動向 | 雑記帳

                                                                                事実上の標準デファクトスタンダードなHaskell処理系であるGHCに貢献するというのが去年掲げた目標だったが、それがようやく実現したので報告する。ついでに、最近のGHC開発状況についても簡単にまとめてみる。 「貢献」と言っても色々あって、バグ報告とかも立派な貢献なのだが、ここで目標としていたのは「書いたコードをGHC本体に取り込んでもらう」ことである。 一つ目:fromInteger :: Integer -> {Float,Double} 年末に書いた記事 Haskell/GHCでの浮動小数点数の扱い – Qiita にあるように、現行のGHCのfromIntegerは値の大きさによって丸め方法が違っている。それによってどういう問題が引き起こされるかというと、 import Numeric import Data.Word main = do putStrLn $ "literal :

                                                                                • Ruby3.0でRactorを入れた理由、M:Nスレッドの制限。深掘りRubyKaigi 2022 with ko1 & kateinoigakukun 文字起こしレポートvol.2 - STORES Product Blog

                                                                                  2022年10月5日に『深掘りRubyKaigi 2022 with ko1 & kateinoigakukun~ RubyKaigiどうでした&RubyのWASI/並列どうなるの? ~』を開催しました。イベントでお話した内容を3部作でお届けします。こちらはvol.2です。 ko1の発表「Making *MaNy* threads on Ruby」をざっくり fujimura:では、笹田さんのパートに移ろうと思います。笹田さん、どうぞよろしくお願いいたします。 ko1:よろしくお願いします。 fujimura:最初にRubyKaigiのトーク内容のざっくりまとめと、感想及びその後の反響をお願いします。 ko1:ざっくりしたまとめで言うと、RubyにM:Nスレッドを入れたいという話を発表しました。M:Nスレッドとは何かというと、ユーザーレベルスレッドライブラリと、カーネルスレッドのよさをハイ

                                                                                    Ruby3.0でRactorを入れた理由、M:Nスレッドの制限。深掘りRubyKaigi 2022 with ko1 & kateinoigakukun 文字起こしレポートvol.2 - STORES Product Blog