並び順

ブックマーク数

期間指定

  • から
  • まで

161 - 200 件 / 681件

新着順 人気順

Haskellの検索結果161 - 200 件 / 681件

  • Haskellで超簡単にシングルバイナリを作る - Qiita

    はじめに Haskellをローカル開発環境で勉強していろいろな抽象的な知識を得たものの、実際活用するにあたってデプロイとかその辺どうするんだろう?やっぱりdocker使って簡単にやりたいな〜 でも、Goとかだと簡単に100%静的なシングルバイナリになるし、Rustとかもmuslを利用していい感じに行けそうだけどHaskellだとわからない>< というお気持ちが強かったので、簡単にデプロイできる100%静的リンクのシングルバイナリ作るぞ!と思って調べたお話です。 追記 下記の紹介しているものとほぼ同じような手順で、自分で拡張しやすいDockerfileでのみ構築されたDockerイメージを自分で作成したので、是非参考にしてみてください。 GitHub Docker Hub 対象読者 Haskellを本番で使ったことない人向け 大雑把に説明 概要 静的リンクされたバイナリを作るためのDocke

      Haskellで超簡単にシングルバイナリを作る - Qiita
    • HaskellのLinearTypes言語拡張について少し調べた - TSUGULOG

      最近リリースされた GHC 9.0.1 で使えるようになった LinearTypes 言語拡張について気になったので調べた。 LinearTypes言語拡張とは GHC9.0.1から使えるようになった言語拡張で、Linear Typeを導入できる。ただ、上記リリースノートに “a first cut” とある通り、まだ実験的な機能としてリリースされた段階のようだ。 通常のGHCの言語拡張のように とすることで使えるようになる Linear Typeとは そもそもLinear Typeとはどのような概念なのか、簡単に説明すると、「関数の引数がちょうど1度だけ評価される」、という条件を指定できるもののようだ。 理論的な基礎となるLinear type systemsについては前から広く知られていたものの、なかなか実装までは至らず、今回Haskellで晴れて実装までこぎつけたとのことだった。 具

        HaskellのLinearTypes言語拡張について少し調べた - TSUGULOG
      • Haskellの環境構築2023

        この記事はHaskell Advent Calendar 2022の1日目の記事です。 この記事では、2022年12月時点のHaskellの環境構築手順を紹介します。2023年になっても通用するといいなあ。 対象とする環境 対象とする環境は以下の通りです: Unix系 macOS (Intel / Apple Silicon) Linux (x86_64 / aarch64) WSL2を含む(WSL1は不具合があった気がするので避けてください) Windows (x64) Arm系CPU搭載のコンピューターを使っている場合は、別途LLVMが必要になる場合があります。以下に当てはまる場合は、「補遺:LLVMバックエンドを使う」も読んでください: 64ビットArm(Apple Silicon Macや、Raspberry Pi OSの64ビット版など)で、GHC 9.0またはそれ以前のバージョ

          Haskellの環境構築2023
        • 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

          • Comparing the Same Project in Rust, Haskell, C++, Python, Scala and OCaml - Tristan Hume

            During my final term at UWaterloo I took the CS444 compilers class with a project to write a compiler from a substantial subset of Java to x86, in teams of up to three people with a language of the group’s choice. This was a rare opportunity to compare implementations of large programs that all did the same thing, written by friends I knew were highly competent, and have a fairly pure opportunity

            • UTF-8のバリデーションとモノイドと半群

              この記事はUTF-8のバリデーションとオートマトンの続きです。 前回はUTF-8のバリデーションが8状態のオートマトン (DFA) で表現できることを見ました。状態と遷移を擬似コードで書けば次のようになるでしょう: -- 8つの状態 data State = START | TAILx1 | TAILx2 | TAILx3 | A | B | C | D -- 入力バイトに応じて次の状態を返す。次の状態が該当しなかったら Nothing を返す next :: Word8 -> State -> Maybe State +----+----+-----+----+ | a0 | a1 | ... | aN | 8ビット整数列 +----+----+-----+----+ | | | v v v +----+----+-----+----+ | m0 | m1 | ... | mN | モノ

                UTF-8のバリデーションとモノイドと半群
              • type family を使って再帰的 ADT をオープンにする

                元ネタは Trees that grow . Haskell では代数的データ型 (ADT) を使ってプログミングに使うデータ構造を定義し,その構造を操作することによりプログラミングを行う. ADT はパターンマッチが容易で,再帰的に定義でき,基本的に閉じた構造になっている.そのため便利な反面,その機能が保守で仇となる場合もある.この問題は古くから知られており,いくつかの解決策も提案されてきた.今回はこのうち,現在 GHC で採用されつつある type family を使った解決方法を紹介する. なお,環境として以下を想定している. The Expression Problemプログラミング,特に Haskell を使用したプログラミングにおいて,データ型は非常に重要な役割を持つ.特に,一部のプログラムにおいては,根幹をなすデータ型がいくつか存在するような場合もある.この場合データ型の扱い

                  type family を使って再帰的 ADT をオープンにする
                • Testing sync at Dropbox

                  …and how we rewrote the heart of sync with confidence. Executing a full rewrite of the Dropbox sync engine was pretty daunting. (Read more about our goals and how we made the decision in our previous post here.) Doing so meant taking the engine that powers Dropbox on hundreds of millions of user’s machines and swapping it out mid-flight. To pull this off, we knew we would need a serious investment

                    Testing sync at Dropbox
                  • State モナドの代わりに Reader モナドを使う

                    注意 この記事は公開当時主張に誤りを含んでいたため,大幅に書き直しています.また,公開当時の主張の誤りについても,付録として載せておきました. Haskell で State モナドはモナドの代表格だ.Haskell 入門者は,多くの場合,状態を伴った計算を State モナドで書くことを習うだろう.しかし,実用上の多くの場面では,State モナドではなく他の選択肢を選んだ方がいい場合がある.一つの選択肢が,Reader モナドと可変参照を使う方法だ.今回は,この手法を使う利点と利用場面について考えていこうと思う. なお,環境として以下を想定している.

                      State モナドの代わりに Reader モナドを使う
                    • 自作言語の紹介と関数型言語の実装方法の検討

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

                        自作言語の紹介と関数型言語の実装方法の検討
                      • NixによるHaskell開発環境の構築 - syocy’s diary

                        Nix package manager によって Haskell のスクリプティングおよびパッケージ開発の環境構築をしていく。 こいついつも環境構築してんな ここで触れられないこと Nix スクリプティング ちゃんとした開発 haskell-language-server の導入 パッケージの設定 高度な依存関係オーバーライド トラブルシューティング nix-shell の立ち上がりが遅い cabal run で cabal 自体の出力を無視したい Mac で nix-env -i が失敗する Mac で channel が消滅する こいついつも環境構築してんな 環境構築以外はブログに書くような一般性のあることをやっていないということで……。 ここで触れられないこと cabal.project によるマルチプロジェクトを扱う方法 外部の nix store を使うこと nix の新しいコマ

                          NixによるHaskell開発環境の構築 - syocy’s diary
                        • Wasp

                          app todoApp { title: "ToDo App", // visible in the browser tab auth: { // full-stack auth out-of-the-box userEntity: User, methods: { google: {}, gitHub: {}, email: {...} } } } route RootRoute { path: "/", to: MainPage } page MainPage { authRequired: true, // Limit access to logged in users. component: import Main from "@client/Main.tsx" // Your React code. } query getTasks { fn: import { getTasks

                            Wasp
                          • Robot - a fast 1kB functional library for creating Finite State Machines

                            Fast 1kB functional library for creating Finite State Machines # Robot Getting Started Why Finite State Machines With Robot you can build finite state machines in a simple and flexible way. import { createMachine, state, transition } from 'robot3'; const machine = createMachine({ inactive: state( transition('toggle', 'active') ), active: state( transition('toggle', 'inactive') ) }); export default

                            • 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
                              • unsafePerformIOではじめる愉快なHaskellプログラミング

                                Haskellは「入出力のためにIOモナドを使う必要があるので難しい」というイメージを持たれがちです[要出典]。この記事ではそのイメージに異を唱えることを目指します。すなわち、モナドを使わずに入出力を含むプログラミングをやってみます。 と言っても、Haskell標準の入出力関数には IO 型がついていることに変わりはありません。ですが、 unsafePerformIO という魔法の関数を使うと、IO 型を外して値を取り出すことができるのです。この記事ではこれを最大限活用します。 module System.IO.Unsafe where -- 魔法の関数 unsafePerformIO :: IO a -> a

                                  unsafePerformIOではじめる愉快なHaskellプログラミング
                                • Apple Silicon MacでのHaskell/GHCの現状・2022年3月編 - Qiita

                                  この記事は Haskell Advent Calendar 2021 の21日目の記事です。 2020年に発表されたApple Silicon (Arm) Macは、2021年に新チップ “M1 Pro/Max” が、2022年には新チップ “M1 Ultra” が登場し、ますます勢いを増しています。Mac使いの皆さんはもう手にされましたか? 新しいアーキテクチャーにはハードウェアだけではなくソフトウェアの対応も重要です。この記事では、2022年3月時点のApple Silicon MacへのHaskellエコシステムの対応状況をまとめます。 この記事では、なるべくRosetta 2を使わず、Armネイティブに動作する環境を構築することを目指します。 インストールにどれを使うか UnixでHaskell環境を構築する場合、 パッケージマネージャーを使う GHCupを使う Stackを使う

                                    Apple Silicon MacでのHaskell/GHCの現状・2022年3月編 - Qiita
                                  • 6社目: 株式会社HERP でカジュアル面談してきました #劇場型転職|ぷりんたい|note

                                    6社目は採用管理プラットフォーム「HERP ATS」を提供する株式会社HERPさんに行ってきました。 オフィスは五反田駅から歩いて5分ほどの五反田S&Lビル内に複数フロアを構えています。今回は最上階フロアの会議室でお話させていただきました。 今回は CEO の庄田さん、リードエンジニアの亀岡さんと、エンジニアの宮﨑さんの豪華3名でご対応いただきました。HERP さんは創業2017年で現在3期目、メンバーも全体的にすごく若くて平均25.7歳だそうです。 株式会社HERP さんといえばこの1年で一気に浸透した「スクラム採用」というキーワードの提唱者でもあって、商標出願もされているみたいですね。他にも色々出願されているみたいです。 [商願2019-22031] 商標:[画像] (標準文字) / 出願人:株式会社HERP / 出願日:2019年2月6日 / 区分:35(一般事務の代行ほか),42(

                                      6社目: 株式会社HERP でカジュアル面談してきました #劇場型転職|ぷりんたい|note
                                    • Haskell For a New Decade

                                      Haskell Problems For a New Decade It has been a decade since I started writing Haskell, and I look back on all the projects that I cut my teeth on back in the early part of this decade and realise how far the language and tooling have come. Back then Haskell was really barely usable outside of the few people who would “go dark” for months to learn it or those lucky enough to study under researcher

                                      • プログラミングってば、マショートリカ人形かよっ【訂正:マトリョーシカ人形】

                                        プログラミングってば、こう、ネストの中にネストネスト。 関数(関数(関数)) ループ(ループ(ループ)) 配列(配列(配列)) モジュール(モジュール(モジュール)) 変数(変数(変数)) というのを延々と繰り返すようなイメージが出来た...。 【追記】...ゴメンゴ。マトリョーシカ人形だったね。 純粋なネストではないけど、 pythonやったら、辞書の中に、リストって記述のパターンがあって、 キーで、値を呼び出すだけで無くて、リストも入れるんだぁみたいな。 入門から、初級の壁の厚さ?っていうのか、なんだかなぁ。 例えば、モジュールや関数は、別のファイルに書いて読み出しなんだろうけど。 (ブコメにあったように、ネストの中身を見せないとか、条件分岐if文をややこしくさせせないとか) SQLとの連携とか、理解出来るようになるまでに、この調子だと10年ぐらい掛かりそうだよ。。

                                          プログラミングってば、マショートリカ人形かよっ【訂正:マトリョーシカ人形】
                                        • 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
                                            • 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
                                              • GitHub - vekatze/neut: A dependently-typed programming language with static memory management

                                                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 - vekatze/neut: A dependently-typed programming language with static memory management
                                                • 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年版
                                                    • 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

                                                      • GitHub - ambulancja/mariposa: A toy programming language with time travel

                                                        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 - ambulancja/mariposa: A toy programming language with time travel
                                                        • 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)
                                                              • Nix – taming Unix with functional programming

                                                                You may be aware of Nix or NixOS. Users love them for being superior tools for building, deploying, and managing software. Yet, Nix is generally perceived as notoriously hard to learn. The core Nix ecosystem consists of several distinct components: Nix is a build system and package manager that comes with a configuration language to declare software components, the Nix language. Software made avai

                                                                  Nix – taming Unix with functional programming
                                                                • 型クラスのご紹介 - molecular coordinates

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

                                                                    型クラスのご紹介 - molecular coordinates
                                                                  • 随伴を使って理解する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
                                                                      • 関数型Pythonアンチパターン

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

                                                                          関数型Pythonアンチパターン
                                                                        • 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
                                                                          • 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
                                                                              • プログラミングHaskell第2版を翻訳しました - あどけない話

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

                                                                                  プログラミングHaskell第2版を翻訳しました - あどけない話
                                                                                • Haskellと余代数(Coalgebra) - 朝日ネット 技術者ブログ

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

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

                                                                                  新着記事