並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 17 件 / 17件

新着順 人気順

purescriptの検索結果1 - 17 件 / 17件

  • Freeモナドのしくみ - Qiita

    Freeは、Functorを受け取ってMonadをつくることができるモナドです。 Freeのデータ型の定義は以下です。 よくわからない再帰的な定義がされていますね。初見で読めたらすごいと思います。 この記事では、上の定義のようなFreeがどのようにMonadをつくるかを見ていきます。 次のような順で説明していきます。 PureScriptの予備知識と用語説明 ListについてFunctor / Monadを実装する Free fについて、同じようにFunctor / Monadを実装する Free fだけでなく、Freeそれ自体もモナドではあるんですが、1つ高いレイヤー(誤魔化した言い方)でのモナドなのでこの記事では触れません。 PureScriptの型システムでは表現できないですしね。 忙しい人のためのFree この記事で説明したいことをひとことで言うと、 Pureがpure、Freeが

      Freeモナドのしくみ - Qiita
    • Zipperとは - Qiita

      Zipperというデータ構造について、図を使ってわかりやすく解説したいと思います。 この記事ではZipperがどういったものかは説明しますが、それがどう応用されうるかは紹介しません。 応用例については、少し長いですが以下の記事がわかりやすかったです。 Haskell/Zippers - Wikibooks また、ComonadとしてのZipperの応用例は、以下の記事がとてもわかりやすかったです。 コモナドを使った抽象化の威力をライフゲームで試してみた - Qiita ただ、Haskellは遅延評価で、PureScriptは正格評価なので、この記事とは実装がところどころ異なります。 サンプルコードはPureScriptですが読めなくても図さえ見れば理解に大きな支障はないと思います。 これは余談ですが、シンタックスハイライトの関係で```haskell ... ```でコードブロック書いてる

        Zipperとは - Qiita
      • 実例によるPureScript

        目次に戻る 第1章 はじめに1.1 関数型JavaScript関数型プログラミングの手法は、かねてよりJavaScriptでも用いられてきました。 UnderscoreJSなどのライブラリは、 mapや filter、 reduceといったよく知られた関数を活用して、小さいプログラムを組み合わせて大きなプログラムを作れるようにします。 var sumOfPrimes = _.chain(_.range(1000)) .filter(isPrime) .reduce(function(x, y) { return x + y; }) .value(); NodeJSにおける非同期プログラミングでは、第一級の値としての関数をコールバックを定義するために多用しています。 require('fs').readFile(sourceFile, function (error, data) { if

          実例によるPureScript
        • PureScript 入門 のそのまえ - エフアンダーバー

          QiitaでPureScriptを始めるのに苦戦している記事を読んで、 自分もこの前すごく苦労したことを思い出したので、 まだ感覚が残っているうちにいろいろ書いておくことにしました。 PureScriptの紹介が目的ではないので、 「PureScriptとは何か」とか「どんなコードを書くか」みたいな話は特にしません。 PureScriptを学ぶ上で知っておくと役に立つかもしれない知識について雑多に書くだけです。 PureScriptを始めるその前に PureScriptは比較的新しい言語で、かつ今のところ非常にマイナーな言語です。 そのため、現在資料がとても乏しく、いくらかき集めても、 関数型言語を何も知らない人間が理解するのは困難な状況です。 そこで、まず最初にやるべきはPureScriptの類似言語を学ぶことだと思います。 遠回りに感じるかもしれませんが、おそらくこちらの方が近道です。

            PureScript 入門 のそのまえ - エフアンダーバー
          • How to Create 3D Games with PureScript Native and C++

            When I last wrote about binding PureScript to C++, I demonstrated animating the PureScript logo with SFML. Since then, PureScript Native (PSN) has superseded Pure11 and the details for using PSN have changed. To make this concrete, I’ll go over what it took to create Lambda Lantern — a 3D game about functional programming patterns. Originally Lambda Lantern started off as a GitHub Game Off submiss

              How to Create 3D Games with PureScript Native and C++
            • GitHub - purescript-python/purescript-python: A Python backend for PureScript.

              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 - purescript-python/purescript-python: A Python backend for PureScript.
              • GitHub - purescript/package-sets: PureScript packages for Spago and Psc-Package

                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 - purescript/package-sets: PureScript packages for Spago and Psc-Package
                • GitHub - purenix-org/purenix: Nix backend for PureScript. Transpile PureScript code to Nix.

                  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 - purenix-org/purenix: Nix backend for PureScript. Transpile PureScript code to Nix.
                  • 魔理沙「PureScript Jelly で、Reactチュートリアル三目並べの《純粋関数型/型安全》版を作るぜ」②

                    昨日の続きです。 霊夢「PureScript Advent Calendar 2022 最終日の記事です。」 数学は論理を探求するひとつの方法である。 ウィトゲンシュタイン『論理哲学論考』6.234 [1] この三昧に遊化(ゆけ)するに、端坐参禅を正門とせり。 この法は、人人の分上にゆたかにそなはれりといへども、 いまだ修せざるにはあらはれず、証せざるにはうることなし。[2] (この三昧に遊化(あそ)ぶには、端坐して参禅するをその正門としている。 この法は、人々(めいめい)の身の上に何不足なくそなわっているのであるが、 修行しないと実現しないし、修行して実証しないと自分のものにならない。) 道元禅師「辨道話」 完成したもの(再掲) ディレクトリ構成(再掲) . ├── package.json ├── package-lock.json ├── packages.dhall ├── pub

                      魔理沙「PureScript Jelly で、Reactチュートリアル三目並べの《純粋関数型/型安全》版を作るぜ」②
                    • 【PureScript】spago が v0.15.0 から esbuild を使うようになっていた。

                      概要 spago という PureScript のパッケージ マネージャー、ビルドツールがある。 spago で、PureScript を JavaScript にバンドルする際に、esbuild のインストールが必要になっていた。 esbuild とは、高速な、JavaScript のビルドツールだ。 これは、spago v0.15.0 以降からの変更という。 = v0.15.0 Since v0.15.0 spago uses esbuild as the underlying default bundler. See the esbuild getting started for installation instructions. v0.15.0以降、spago は esbuild を基本的なデフォルトのバンドルソフトとして使用しています。インストール方法については、esbuild

                        【PureScript】spago が v0.15.0 から esbuild を使うようになっていた。
                      • 静的型付け関数型言語 PureScript の環境構築。【 WSL2/2021年9月 ver. 】

                        雨のしずくに 景色が映っている しずくのなかに 別の世界がある ― 大江健三郎『私という小説家の作り方』(新潮社) 前提 Ubuntu 20.04 LTS(WSL2) PureScript 0.14.4 手順 以下の公式のドキュメントを参考に、PureScript の環境構築を行ってまいります。 Getting Started with PureScript 最初に PureScript をグローバルインストールします。 ❯ npm install -g purescript npm WARN deprecated request@2.88.2: request has been deprecated, see https://github.com/request/request/issues/3142 npm WARN deprecated har-validator@5.1.5: th

                          静的型付け関数型言語 PureScript の環境構築。【 WSL2/2021年9月 ver. 】
                        • PureScript JP Discord サーバーを建てました!

                          概要 PureScript JP Discord サーバーを建てました。次のリンクから参加できます! 【Purescript Logo】、©Gareth Hughes、クリエイティブ・コモンズ・ライセンス(表示 4.0 国際) PureScript や関数型言語に興味があるなら、ぜひ参加してみてください。 モチベーション PureScript は Haskell などの関数型言語を系譜にする AltJS 言語です。 非常にミニマルな言語機能を持っていて、サーバーサイドでは NodeJS、クライアントサイドではブラウザで動かすことができます。 しかし、依然として入門する難易度の高さがあります。 個人的に、それは言語自体の難易度ではなくドキュメントや質問できる場所の少なさなどに起因していると思っています。 特に、質問できる場所に関しては、今まで英語圏のものしか存在していませんでした[1]。 そ

                            PureScript JP Discord サーバーを建てました!
                          • 自作フレームワークに静的サイトジェネレータを組み込んだ

                            はじめに 以前から作っている自作フレームワーク Jelly の v0.5.0 をリリースしました SSG 機能や、クライアントサイドでのルーティングなどの機能追加を行いました。 また、Jelly 以下のモジュールを Jelly.Core、Jelly.Router、Jelly.Generator に分割しました。Router は Core に依存し、Generator は Core と Router に依存しています。 それぞれの役割は以下の通りです。 Core Signal、Component などの基本的な機能の提供 これがあれば単一ページのアプリケーションは作れます Router ルーターの提供 ページ全体を再読み込みするのでなく、CSR でページ遷移を行うことができます Generator SSG の提供 静的な HTML の生成や、静的なデータをとってきてアプリに埋め込むことができ

                              自作フレームワークに静的サイトジェネレータを組み込んだ
                            • マルチタスクはどう実現されているか?JavaScriptとPureScriptで学ぶマルチタスクの実装

                              この記事はJavaScriptとPureScriptでマルチタスクの仕組みがどう実現されているかを解説する記事です。 題材とするのは、PureScriptの非同期処理ライブラリAffです。 実はこのライブラリ、マルチタスクの仕組みを実現する実装のコア部分はJavaScriptで書かれています※。 したがってこの記事に出てくるコードは9割くらいはJavaScriptのコードになります。 なので「PureScriptはわからんけどJavaScriptならわかる」という方の知的好奇心も満たすことができるかもしれません。 目次から「Fiberの実行でまず行われること」にジャンプして下にスクロールしていただければ、JavaScriptのコードが多いということがわかるかと思うので気になる方はまず試しにこちらをぱっと見していただけたらと思います。 こういう話をします マルチタスクの方式の話 Fiberの

                                マルチタスクはどう実現されているか?JavaScriptとPureScriptで学ぶマルチタスクの実装
                              • PureScriptのレコードで必須フィールドと任意フィールドを表現する - Qiita

                                目的 必須フィールド「a」「b」 任意フィールド「c」「d」 を持つレコードMyRecordを作りたい! 方法 import Prim.Row as Row import Unsafe.Coerce (unsafeCoerce) data MyRecord type MyRecordRequired opt = { a :: Int, b :: Int | opt } type MyRecordOptional = ( c :: Int, d :: Int ) type MakePartialRecord (req :: # Type -> Type) (opt :: # Type) (rec :: Type) = forall options trash . Row.Union options trash opt => req options -> rec makeMyRecord ::

                                  PureScriptのレコードで必須フィールドと任意フィールドを表現する - Qiita
                                • Reactを題材にPureScriptを始める

                                  はじめに 本記事ではPureScriptの前提知識を仮定せずに、Reactを使ってHello, world!を行います。 本記事の前半でPureScriptをインストールし、基礎文法の一部を紹介します。 後半ではPureScriptを用いてReactの仮想DOMを定義してブラウザに描画します。 本記事を読み進めていく上で関数型プログラミングに精通している必要はありません。 逆に、使用経験があるほうが望ましいのは次の通りです。(必須ではありません。) React バンドルツール(Webpack等) TypeScript なお、本記事ではしばしばJavaScriptのコードと比較してPureScriptを説明しますので、JavaScriptの知識は前提とします。 また、記事中の各コマンドはWindowsユーザー向けの記載になっていますので、Windows以外の方は適宜読み替えてください。 Pu

                                    Reactを題材にPureScriptを始める
                                  • PureScript + Halogen + Tailwind で Web フロント開発環境構築 (in VSCode) - Qiita

                                    概要 PureScript は活発に開発が行われているため、開発環境構築の方法を適宜まとめる必要があります。 この記事では PureScript のインストールから Web フロントエンドを開発できるところまでの環境構築をまとめます。 対象 PureScript の環境構築を VSCode でしたい PureScript でフロントエンドの開発がしたい TL;DR にまとまってます 筆者の環境 細かくバージョン書いていますが多分気にしなくて大丈夫です。 Windows 11 22H2 WSL2 5.15.68.1 node 18.12.0 npm 8.19.2 PureScript のインストール プロジェクトルートになるディレクトリを作って初期化します。

                                      PureScript + Halogen + Tailwind で Web フロント開発環境構築 (in VSCode) - Qiita
                                    1