Object-Oriented Conference 2024で発表した資料です。 https://fortee.jp/oocon-2024/proposal/b31c9818-3cb8-4350-adfe-cbc839cdf829 ビジネスの専門知識(ドメイン)を中心に据えたドメイン駆動設計に…
![ビジネスロジックを「型」で表現するOOPのための関数型DDD / Functional And Type-Safe DDD for OOP](https://cdn-ak-scissors.b.st-hatena.com/image/square/f33b75b12f23d0d580e7b14caba583090f4c2c58/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fba0925c51b684f419dce96a34bcd4401%2Fslide_0.jpg%3F29430793)
この記事では、JavaライクなインターフェースとHaskellライクな型クラスを比較します。どちらも、複数の異なる型を統一的に扱うための仕組みです。 インターフェース インターフェースはご存知の方も多いと思いますが、コード例を載せておきます。 // インターフェースの定義 interface Greetable { String greet(); } // 実装の例1 class Hello implements Greetable { String message; Hello(String m) { this.message = m; } public String greet() { return "Hello " + message + "!"; } } // 実装の例2 class Goodbye implements Greetable { public String gree
追記:いくらなんでもあまりにも長いので、配列演算に焦点を絞ってより「Rustっぽさ」の気持ちを強調した姉妹編を書きました。手っ取り早く雰囲気を掴みたい方はこちらもどうぞ。 TL;DR GHC 9.0 から Haskell に入った線型型(Linear Types)の機能を一部割とガッツリ使ってみたので、Linear Haskell の現在の使い心地と将来の展望を報告するよ。 使おうと思えば使える段階にあるけれど、一部バグもあるし、まだ言語機能面で実装が追い付いていない部分もあって、快適に書けるようになるにはもうちょっと掛かるよ。それでも実用しようと思えばできるレベルにあるよ。 RustのようになるにはLinear Constraintsに期待。 更新履歴 2023/12/15 11:45 姉妹編へのリンク追加。 2023/10/01 12:30 線型性を納得してくれない場合の \eta-展
はじめに 最近、社内でHaskellを学ぶ熱意が高まっており、私も競技プログラミングでHaskellを使いたいと考え、環境構築を行いました。この記事では、Haskellの実行環境の構築から、Visual Studio Code上でのプログラミング環境の設定、そしてAtCoderへの提出までの手順を紹介しています。 なお、本記事ではHaskell自体の解説は行っておらず、実行環境はMacOSを想定しています。 GHCupのインストール GHCup https://www.haskell.org/ghcup/ GHCupは、HaskellのコンパイラであるGHCをインストールするためのツールです。複数のバージョンをインストール・切り替えをするために使用します。 公式のトップページに記載されている以下のコマンドを実行します。 curl --proto '=https' --tlsv1.2 -sS
はじめに (あともう少しで)あけましておめでとうございます。 この記事では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
n度目のチャレンジでHaskellをしっかりやりたいなと思って環境構築しようとしている。ただ、調べてみると情報がいろいろ錯綜していそうなので、2022年時点の話を改めてまとめておきたい。(が、この情報も錯綜を生む可能性がある 🤔) ちなみに開発環境として想定しているのは macOS 12.6 (Apple M1 Pro) brew 経由でインストールしておきたい 開発環境には VSCode を使用 です。 参考資料 結局下記の記事を参考にした。 たしかに数年前は cabal より stack の方が便利ですよと言われていたと思ったが、初心者につきあまり違いがわかっていないので、一旦記事に従って cabal を入れる方向で行こうかと思う。 ちなみに、とほほさんの情報も一応参照した。 が、環境構築で紹介されている「Haskell Platform」は 2022 年で deprecated に
HaskellをインストールしてHello Worldしたメモです。 stack GHC IntelliJ plugin Hello World 以前、すごいhaskellたのしく学ぼうとふつうのHaskellプログラミングを写経して以来まったく触ってなかったので、 Windowsに新規にHaskell環境をインストールしてみます。 たしか以前はHaskell Platformを利用してまるっと一式インストールしたのですが、今はあまり推奨されていないようで stackを利用してGHCをインストールするのがよいようです。 下記のバージョンでインストールしてみます。 stack 2.7.3 GHC 8.0.2 stack 下記からstackの最新のインストーラを利用してインストールします。 https://www.haskell.org/downloads/ stack-2.7.3-windo
こんにちは。今回さのテーマは「Haskellプロジェクトを作るための環境構築」です。Haskellのプログラミング周りのツールは日進月歩で進歩しており新しいツールが出てきている状態ですので、今回紹介する設定もすぐ古くなってしまう気もしますが、2021年9月時点で筆者が個人的に良いと思う環境構築について書いてみたいと思います。 【目次】 ghcupでstackのインストールも可能になった ghcupの導入開始 PATHの設定 HLSのインストール設定 stackのインストール設定 各ツールのビルドとインストール パスの有効化 stackの設定をする ghcupでstackのインストールも可能になった ネット上の情報を探しているとghcupではghc, cabal, HLS(Haskell Language Server)を導入し、Stackについては別途インストールするという情報が多いのです
この記事は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のコードの補完を使いたいだけ」という感じパッケージを入れては消して、タイトにまとめたかったからゴチャゴチャしてきたらlinuxを初期化して何度か試した結果に残ったことをメモする。 debian系のlinuxにhaskellの環境をつくる。最初haskell-ide-engineというのを使おうと思ったが、うまくいかなかった。このページを参考にさせてもらって、vscodeの拡張のhaskeroを使うことにしたら、うまくいった。4GBぐらい容量を消費してしまう。 まずは次。 sudo apt update sudo apt install haskell-platform そしてstackを入れる。 curl -sSL https://get.haskellstack.org/ | sh そして.bashrcという名前のファイルに次を追記。 export PATH="$
これは、Haskell Advent Calendar 2021の2日目を埋めるために書いた記事です。実は単に僕が作った「関数プログラミングの入門」の資料の宣伝です。 ちなみに、僕の関数プログラミングの定義は「不変データプログラミング」であり、おそらく最も厳しい定義です。なので内容が分かれば、関数プログラミングに入門できた言ってもよいのではないかと思います。 関数プログラミングことはじめ 僕は毎年、岡山大学の三年生に向けて、2コマで関数プログラミングを教えています。その資料が、「Cプログラマーのための関数プログラミングことはじめ」です。岡山大学工学部情報系学科の学生は、C言語を習っているので、C言語に似た文法を独自に定義して、関数プログラミングを説明しています。 [入門]関数プログラミング [入門]関数プログラミングは、WEB+DB PRESS Vol.67に掲載された記事です。編集部のご
「ハスケル」と呼びます。 数学者・論理学者の Haskell Curry の名前に由来しています。 LISP, ML などの言語の影響を受けています。 関数型プログラミング言語 であり、特に 純粋関数型言語 に分類されます。 金融、セキュリティ、数学・科学解析、構文解析などの分野での利用例があります。 関数型プログラミングに慣れていない人にとっては、多少学習コストが高いようです。 遅延評価 を採用しており、式は記述されていても必要となるまで評価されません。 関数型言語ですが、モナド などを利用することにより、手続き型言語のような記述も可能です。 Haskell 1.0 (1990年)、Haskell 98 (1999年)、Haskell 2010 (2009年) などのバージョンがあります。 コンパイル型言語ですが、スクリプト言語の様にインタプリタで呼び出すこともできます。 処理系は、イン
Link to hereはじめに この記事では、Haskellを業務でカジュアルに使う観点やヒントについて、簡単に紹介します。 Haskellを業務で使える局面は、以下のようにいくつか考えられます。 「プロダクト」の開発用言語として、Haskellを使う 「作業」の支援・加速用に、Haskellを使う 「思考」の支援・加速用に、Haskellを使う つまり、プロダクトの開発用言語としてHaskellを用いない業務形態においても、上記2や3のケースとして、Haskellを使用できます。すなわち、Haskellは幅広い局面でカジュアルに、つまり気軽に手軽に使用できます。 本記事では、特に、上記の2と3について、いくつかの観点やヒントや例を紹介します。 なお、上記は、Haskellを用いる場合には限りません。Python, Perl, Ruby, Rust, Scala, OCaml, Cloj
はじめに 最近のウェブアプリではバックエンドをREST-APIとして用意し、 フロントエンドはREST-APIから引っ張ってきたデータをReactやVueといったフレームワークで描画することが多いと思います。 このようなウェブアプリを開発する際に問題となるのはバックエンドとフロントエンドを並行して開発しにくいということです。バックエンドができなければフロントエンドはどんなデータが来るのかわからず描画できませんし、バックエンドもフロントエンドからどのようなリクエストが来るか決まらないと実装ができません。 そのため、最初にREST-APIの仕様を定めて、その仕様に沿ったモックサーバを作成し、 フロントエンドはバックエンドが完成するまでそれを用いて開発を進めるということが行われます。 さてそのREST-APIの仕様とはどのように記述されるのでしょうか? 1. 自然言語で記述する 一番よくある場合
純粋関数型プログラミングで副作用を扱う方法Posted by Mizunashi Mana on April 05, 2020 Haskell は他のプログラミング言語には見られない特徴を多く持っている。その中の1つが純粋性だ。Haskell は純粋関数型プログラミング言語であることを、売りの1つにしている。しかし、純粋性は多くの場合表現力の縮小を招く。ところが Haskell は、IOモナドの導入により、通常のプログラミング言語と変わらぬ表現力を持てるようになっている。これは、とても驚くべきことだ。しかし、同時にこれは Haskell 入門者にとって、大きな混乱を招いているようだ。 今回は、そもそも純粋性とはなんなのか、なぜ他の言語は純粋性を担保できないのか、そして Haskell はどうやって IO モナドにより純粋性を担保しつつ他の言語と変わらない表現力を持てるようにしているのかにつ
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
Turtle Graphics on Gloss Ver.1.0.0.0 Gloss を使った Turtle Graphics です。 実際のコードは こちらの github にあります。 Gloss については こちら の記事が参考になる と思います。 含まれるファイル app / Main.hs -- 実験用 sample ├ circleDance.hs -- 複数の円を同時に描く ├ dragonCurve.hs -- dragon 曲線を描く ├ kochCurve.hs -- Koch 曲線を描く ├ graph.hs -- 関数のグラフを描く └ star.hs -- 星を描く sample / L-system ├ dragonCurveL.hs -- L-system で dragon 曲線を描く └ kochCurveL.hs -- L-system で Koch 曲線
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く