並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 52件

新着順 人気順

purescriptの検索結果1 - 40 件 / 52件

  • Webフロントエンドの開発効率を高く保つための考え方

    これまでいろんな現場でWebフロントエンド開発をしてきて、メンテナンスしやすく効率の高いWebフロントエンド開発をする上で重要になる考えが自分なりにまとまってきたので記事にしてみます。 Worse is Betterという考え方 自分が見てきた中でWebフロントエンドの開発効率が落ちてしまう一番の要因は、きれいで理論的には優れているアーキテクチャを構築しようとしてそれ自体がもたらす複雑性を支えきれないというパターンです。 少し前にフロントエンドにClean Architecture(以下CA、あの同心円の図を指すのは誤用に近いですがここではそれに乗ります)を導入する記事が流行ったと思いますがあんな感じです。ああいったクラスベースでDIが重要となる設計手法はサーバーサイドのJavaでSpringを使うのとは違ってReactがサポートしているものではないため、CAの実現自体に高い設計スキルが必

      Webフロントエンドの開発効率を高く保つための考え方
    • State of JavaScript 2020:いちばん利用率の高いJSフレームワーク、フロントエンドがReact、バックエンドはExpress、テストにはJest。2万4000人の調査結果

      IT技術者のSacha Greif氏とRaphaël Benitte氏が、JavaScriptに興味を持つ世界中のIT技術者約2万4000人にアンケートを取り、結果をまとめたWebサイト「State of JavaScript 2020」が公開されています。 JavaScriptの最新のシンタックスや命令がどれくらい使われているか、フロントエンドやバックエンド、ビルドツールなど分野ごとにさまざまなJavaScript関連の技術はどれくらい興味を持たれているかなど、アンケート結果を基にして、満足度(Satisfaction)、興味(Interest)、利用率(Usage)、認知度(Awareness)などを計算。それぞれについてランキングを作成しています。 それぞれの値は次の式で計算されると説明されています。それぞれの項目にはアンケートの回答数が入ります。 満足度=またこの技術を使いたい/(

        State of JavaScript 2020:いちばん利用率の高いJSフレームワーク、フロントエンドがReact、バックエンドはExpress、テストにはJest。2万4000人の調査結果
      • 💣Webフロントエンドにおける関数型「風」プログラミングに関する個人的まとめ - Qiita

        ここ数年の流れについて 技術的側面 Webフロントエンド(ほぼTypeScript&React界隈)において、オブジェクト指向(厳密に言うとクラスの利用)から脱却する流れがあります。原因は以下の2点。 クラスの継承の問題点が(IT業界全体に)広く定着したこと JS/TSの進化、Reactの進化、関数型言語の考え方などの影響により、クラスを用いてデータと関数群を紐づけるメリットが薄くなったこと 現状、設計レベル(実務的にはどの関数を纏めてモジュール化するのか、モジュール同士をどう繋ぎ合わせるのか、フォルダ割りどうするのか等)のノウハウがまだ固まっておらず、既存の設計論はそれなりに有効です。 コミュニティ的側面(政治) これらの流れはWebフロントエンドの中でもTypeScript&Reactの界隈が主導しており、そのノウハウは長年絶対視されてきたオブジェクト指向を解体するような内容であったた

          💣Webフロントエンドにおける関数型「風」プログラミングに関する個人的まとめ - Qiita
        • 「1から100の偶数の和を求めるワンライナー」まとめ - Qiita

          2019年8月11日頃にTwitterで「1から100の偶数の和を求める方法」(ワンライナー)が話題になったので 各言語ごとにまとめてみました。 私の独断と偏見ですが 「2550を直接出力するもの」「公式を使って総和を計算するもの」は 除外しています。 あくまでそれぞれのプログラミング言語の特色が現れるものをまとめたいと考えています。 以前あったズンドコきよしのまとめみたいなノリです。 https://qiita.com/shunsugai@github/items/971a15461de29563bf90 編集リクエスト歓迎です。 新しいワンライナーはコメント欄ではなく編集リクエストにて追加していただけると助かります! --- 8/15 11:30 コメント欄を取り込み&新たにツイートを拾いました。 --- 発端のツイート まにゃです。 いきなり問題! ここまでのツイートを手がかりに P

            「1から100の偶数の和を求めるワンライナー」まとめ - Qiita
          • 経験5年のHaskellユーザがScalaを仕事で半年使ってみた

            haskell-scala-java ちょっと前までScalaを書いていたので、 Haskell好きな人がScalaを書いた感想を書きます。 タイトルは経験15年のOCaml ユーザーが Haskell を仕事で半年使ってみた - camlspotter’s blogの模倣です。 あくまで1ユーザの感想です。 Scalaに慣れてしまうと違和感を忘れてしまうと思ったので、当時箇条書きで雑にメモしていたものを参照して書いています。 逆にScala使いがHaskellを知るメモに役立つかもしれません。 Haskell歴 when: 2013年から知って学び始めましたが、本格的に使い始めたのは2015年からで、5年ほど使っています where: どの言語を使っても良くて新しい言語を学ぶ必要がなければ基本的にHaskellを使っています what: 趣味OSSプロジェクトの大半 現在一番スターもらっ

              経験5年のHaskellユーザがScalaを仕事で半年使ってみた
            • 新しくプログラミング言語を作る際に数値型をどうするべきか

              この記事は、新しくプログラミング言語を設計する際に数値型をどうするべきかについて、私の持論をまとめたものです。 数の体系 JavaScript(BigInt以前)やLua(〜5.2)などは唯一の数値型が浮動小数点数型で、整数も実数も同じ「number」型で表現します。ミニマルな言語を作るのならそういう設計もアリかもしれませんが、ネイティブコンパイルも視野に入る実用的な言語を作るなら整数と実数を一緒くたにする設計はやめた方が良いと思います。 特に、JavaScriptにコンパイルする言語を作るからと言って、数値型の設計まで真似る必要はありません。 整数を浮動小数点数で表現すると、思わぬ性能低下の要因になったりします。最近(2023年2月)、次のツイートが話題になりました: これは正のゼロと負のゼロが値として区別され、正のゼロは内部的に整数扱いされるのに対し負のゼロはそうではないことによるもの

                新しくプログラミング言語を作る際に数値型をどうするべきか
              • Functional Programming in TypeScript

                Web apps are a mandatory part of every modern application nowadays, no matter how small or complex it is. From one-click apps that convert pictures to Photoshop, everyone wants fast and easy access to the app, and the web is one of the easiest ways to do that. At Serokell, we use TypeScript for writing web applications. But our main programming language is Haskell. And in this article, we want to

                  Functional Programming in TypeScript
                • 知らない技術まみれのチームに移動した時に実践したこと - がんばるぞ

                  この記事はスターフェスティバル Advent Calendar 2022 11 日目の記事です qiita.com 昨日は @shota1995m の オブジェクト指向 UI デザインを読んだから図解してみる でした はじめに 僕は生粋(?)の PHPer なので、PHP 以外の技術はなんちゃってレベルでしか触ったことがないのですが 知らん言語(TypeScript)、知らんフレームワーク(Koa, NestJS, commander)、知らんミドルウェア(Apache Kafka)、知らんその他諸々(Protocol Buffers, Terraform)を使ってるチームに移動して難易度が高めな課題に取り組むことになったため、効率的に技術をキャッチアップできないと終わると思いヒィヒィ言いながらがんばったことを共有します やったこと 座学の時間をガッツリとる まずは手を動かす方が有効な場面

                    知らない技術まみれのチームに移動した時に実践したこと - がんばるぞ
                  • なぜ MVVM + FRP は Elm Architecture に勝てないのか - dely Tech Blog

                    こんにちは、delyでクラシルiOSアプリ開発を担当している稲見 (@inamiy)です。 この記事は「dely #2 Advent Calendar 2020」の25日目の記事です。 dely #1 Advent Calendar 2020 dely #2 Advent Calendar 2020 昨日は、delyのSREチームのjoooee0000(高山)さんによる delyのSREチームがオンコールトレーニングを導入する3つの理由 の記事でした。 オンコール対応できるエンジニア、強くてカッコいい・・・ 私の方からは、メリークリスマス🎄🎅🔔 にふさわしい Elm Architecture による unidirectional なプレゼントをお届けします🎁 (2020/12/26 EDIT: タイトルを「なぜ MVVM は Elm Architecture に勝てないのか」から「

                      なぜ MVVM + FRP は Elm Architecture に勝てないのか - dely Tech Blog
                    • JavaScriptの代替言語、TypeScriptが最有力か

                      JavaScriptは、Webブラウザで実行されるプログラミング言語として代表的な存在だ。しかし、JavaScriptで大規模アプリケーションを開発するのは難しいとして、代替のプログラミング言語、JavaScript風プログラミング言語、JavaScriptのスーパーセットとして開発されているプログラミング言語が存在している。これらの中からどれを選択すればよいかを判断するのが難しい状況にあるが、多くのユーザーは「TypeScript」を代替言語として使う動きが出てきているようだ。 State of JavaScriptは、2019年におけるJavaScript関連の調査データとして、「The State of JavaScript 2019」を公開した。調査の対象にJavaScriptの代替言語に関するものがあり、他の言語を引き離してTypeScriptが強い人気を示している。 TypeS

                        JavaScriptの代替言語、TypeScriptが最有力か
                      • hyper-ts で type-safe & stateless なExpressアプリケーションを構築する

                        tl; dr TypeScriptとExpressを使ってアプリケーションを開発するにあたって、以下の課題がある。 現状、 @types/express における型定義は厳密でない リクエストハンドラの中でごちゃごちゃとやってしまい、ステートフルになりがち こうした課題に対して、gcanti/hyper-ts が有効である。 1. @types/express における型定義はstrictでない 例として、Application インターフェースの render メソッドの型定義を見てみる。 render(view: string, options?: object, callback?: (err: Error, html: string) => void): void; この型定義は厳密さに欠ける。まず、第二引数のoptionsの型は objectである。(cookieメソッドのオプシ

                          hyper-ts で type-safe & stateless なExpressアプリケーションを構築する
                        • 型クラスのご紹介 - molecular coordinates

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

                            型クラスのご紹介 - molecular coordinates
                          • The Hamler Programming Language

                            Haskell-style functional programming language running on Erlang VM. View the Project on GitHub hamler-lang/hamler The Hamler Programming Language Hamler is a strongly-typed language with compile-time typechecking and built-in support for concurrency and distribution. Hamler empowers industries to build the next generation of scalable, reliable, realtime applications, especially for 5G, IoT and edg

                            • JavaScript backend merged into GHC | IOG Engineering

                              A new JavaScript backend was merged into GHC on November 30th, 2022! This means that the next release of GHC will be able to emit code that runs in web browsers without requiring any extra tools, enabling Haskell for both front-end and back-end web applications. In this post, we, the GHC DevX team at IOG, describe the challenges we faced bringing GHCJS to GHC, how we overcame those challenges, and

                              • Haskellのsomeを正格評価したら無限ループする話 - 星にゃーんのブログ

                                パーサコンビネータなんかでよく使う、 some と many という関数があります。それぞれ引数を1回以上/0回以上実行して結果のリストを返す関数で、これの単純な定義は some v = (:) <$> v <*> many v many v = some v <|> pure [] となります。 some は v : (many v) 、 many は some v または [] を返すイメージです。 パーサコンビネータでは、例えば英数字1文字以上の文字列をパースしたいとき some alphaNum と書いたりします。 面白いのは、一見とても自明に思えるこの定義は、遅延評価がないと無限ループしてしまう点です。 本当は v が失敗したら some v 自体が失敗してほしいところが、v が失敗するか否かに関わらず many v が実行されてしまいます。正格評価の気持ちで考えるとあたりまえで

                                  Haskellのsomeを正格評価したら無限ループする話 - 星にゃーんのブログ
                                • 静的型付けでnull安全なAltJSの評価と選定

                                  2019年09月版. 静的型付けでnull安全なAltJSの評価と選定. 比較整理する必要があったので比較しました. 間違っている所などの指摘を受けたいので広く公開します. ちなみに私は2015年頃はDartを推していたようですね. 当時のTypeScriptはstrictNullChecksも@typesも無かったのであまり魅力的に感じなかったようです. 私の提言 結論から書きます. 個人的にはPureScriptを推したいですが, 流石に他の人にとっては学習コストが大きすぎると思ったので, 基本的に以下のような感じに選ぶと良いと思いました. 外部ライブラリの使用がメッセージ単位でまとまる程度に収まる → Elm Reactを使いたい → Reason VueやAngularなどReact以外のフレームワークをガッツリ使う, Node.jsをサーバーサイドでメインで使う, 小規模なスクリ

                                    静的型付けでnull安全なAltJSの評価と選定
                                  • JavaScriptとWeb開発 InfoQ トレンドレポート 2020

                                    Web Development 2018 Q4 Graph JavaScriptとWebエコシステムがどれほど成長したかを考えると、1つのグラフにすべての領域を表示することはもはや現実的ではありません。その結果、分析を11の主要分野に分割しました。 Web開発 言語 / 標準 / パターン Web開発 クライアントサイドフレームワーク / ライブラリ Webエンジニアのためのサーバサイドプラットフォーム / フレームワーク / データ / API Webエンジニアのためのクラウド パッケージ管理 / バンドル / 最適化 Web開発のテストと自動化 Webエンジニアのためのモバイル / デスクトップ環境とフレームワーク WebエンジニアのためのIoT / ブロックチェーン / 機械学習 WebエンジニアのためのVisualization / XR CSS Web開発 コードエディタとIDE

                                      JavaScriptとWeb開発 InfoQ トレンドレポート 2020
                                    • GitHub Trending RSS

                                      GitHub Trending RSS Star The latest build: 7 October, 2023 All Languages Unknown Languages Unknown languages 1C Enterprise 2-Dimensional Array 4D ABAP ABAP CDS ABNF ActionScript Ada Adblock Filter List Adobe Font Metrics Agda AGS Script AIDL AL Alloy Alpine Abuild Altium Designer AMPL AngelScript Ant Build System Antlers ANTLR ApacheConf Apex API Blueprint APL Apollo Guidance Computer AppleScript

                                      • fp-tsでTypeScriptでも関数型プログラミング - Qiita

                                        この記事は ウェブクルー Advent Calendar 2019 10日目の記事です。 昨日は @wchikarusato さんの「steamゲームのmodから学ぶ設計」でした。 0. はじめに 普段はScalaをメインにWebアプリケーションの開発をしています。 たまにTypescriptも触るんですが、Scalaと比べるとコレクション操作で痒いところに手が届かなかったりして、ちょっとモヤモヤする時も。Scalaっぽく開発できないかな〜と思っていた所に、fp-ts という関数型プログラミングのエッセンスを取り入れられるライブラリが目についたので、興味本位で使ってみました。 Haskell, PureScript, Scalaから影響を受けているようで、メソッド名も関数型プログラミング界隈で馴染み深いものになっています。(まあ Haskell, PureScript は触ったことが無いの

                                          fp-tsでTypeScriptでも関数型プログラミング - Qiita
                                        • Malicious code in the PureScript npm installer - Harry Garrood

                                          I'm a software engineer based in Edinburgh, Scotland. My interests include helping people program computers more effectively, open source, maths, and music. You can get hold of me via: Email harry@garrood.me Mastodon @hdgarrood​@hachyderm.io Twitter @hdgarrood GitHub @hdgarrood 12 Jul 2019 Earlier this week, I found and addressed some malicious code in the purescript npm installer. The malicious c

                                          • Haskellのscan系関数を使いこなす | 雑記帳

                                            Haskellはリストを操作する関数を多数提供しています。map, filter, foldあたりが代表的で、これらは他の言語でもおなじみかと思います。 一方で、scan系関数(scanl, scanr)は他の言語ではあまり見かけない気がします。同じ関数型言語のSMLやOCamlにも標準では入っていないようです。 この記事では、scan系関数がどういう場合に利用できるかを紹介します。 scan系関数とは 定義と図解 scan系関数は、リストを元にして新しいリストを構築する関数です。新しいリストの要素は、与えられた初期値と関数を使って元のリストを途中まで畳み込んだものになります。「foldの途中経過を残す版」とでも言えば良いでしょうか。 型はそれぞれ次のようになります: scanl :: (b -> a -> b) -> b -> [a] -> [b] scanr :: (a -> b ->

                                            • 多相からプログラミング言語を見る - 趣味はデバッグ……

                                              こんにちは。ホビー型システミストの岡本です。 最近 C++ の習得をしていて、なんとなく多相(polymorphism)の視点からいくつかのプログラミング言語をまとめてみようという気になったので書いてみます。 部分型多相(subtype polymorphism) クラスベースオブジェクト指向言語でよく使うのは部分型多相ですかね。 Java や C#・C++ にある、名称的部分型多相(nominal subtype polymorphism)はこんな感じ。次の例は Java です。 class A {} class B extends A {} public class Main { public static void main(string[] args) { A foo = new B(); } } 変数 foo は A 型だけど、型(クラス)B は A の部分型(サブクラス・派生ク

                                                多相からプログラミング言語を見る - 趣味はデバッグ……
                                              • Functional Design and Architecture (First Edition)

                                                Important: this is the First Edition of the book. * Consider buying Functional Design and Architecture (Second Edition) by Manning instead. * See also my new book Pragmatic Type-Level Design. FDaA is a fundamental book about Software Design in Haskell and other functional languages. The main idea of this book is to provide a comprehensive source of knowledge, and a complete methodology for buildin

                                                  Functional Design and Architecture (First Edition)
                                                • SwiftUI 時代の Functional iOS Architecture

                                                  この本は、2020/09/21 に iOSDC Japan 2020 にて登壇発表した内容を文字起こししたものです。 English ver: https://zenn.dev/inamiy/books/3dd014a50f321040a047 関数型プログラミングと圏論を用いたUIアーキテクチャー論として、iOSアプリ開発 (SwiftUI) だけに留まらず、フロントエンド開発の各方面でご活用いただけます。 使用言語は、疑似Swiftコードを用いており、他言語にも似た構文を持っているため、Swiftを知らなくてもそれとなく読めると思います。 この本では、主に下記の2点について学ぶことができます: 1. Redux / Elm Architecture の状態、アクション、Reducer 等を、各モジュールごとに分解・合成可能にする「Optics」 2. SwiftUI、React、Elm

                                                    SwiftUI 時代の Functional iOS Architecture
                                                  • Why TypeScript is the best way to write Front-end in 2019

                                                    TypeScript is getting more and more popular in the Front-end environment. Already 80% of developers admit they would like to use or learn TypeScript in their next project. Myself, I have loved it since I used it for the first time. And I will continue using this in all my next projects for sure. Some people raise concerns that TypeScript is an unnecessary dependency of the front-end toolchain. Is

                                                      Why TypeScript is the best way to write Front-end in 2019
                                                    • ChatGPTに自然変換について聞いてみよう

                                                      昨年後半くらいから、AIによる自然言語処理(NLP)の話題が急速に高まっていて、特にOpenAIのChatGPTは人間らしい応答がすばやく出来ることで評判となっています。 自然言語処理自体は古くからある概念で、漢字かな変換や、自動翻訳などさまざまな分野で取り入れられてきましたが、とうとう実用的なプログラミングそのものすら、プログラミング言語ではなく自然言語で記述出来る様になりつつあるというのは本当にすごいことだと思います。 さて、自然言語処理でプログラミングが出来ること、自然言語、自然とは何か、等といろいろ思索してみたところ、そういえばAIは自然性について理解はしているのだろうかと思いつきました。ここで言う自然性とは数学の一分野における圏論の概念の一つで、自然変換が持つ性質です。自然言語の自然とは直接は関係ないので、これは無理矢理な解釈によるジョークなのですが、もしかすると、何か深いところ

                                                        ChatGPTに自然変換について聞いてみよう
                                                      • 小規模なSPAをつくってみてわかったFable(F# -> JS)の良いところ

                                                        突然ですが私、「論文等の書誌引用データのフォーマットを変換するための SPA」をつくりました✌️ RIS形式の書誌引用データをSIST02形式に変換するツールをつくった - いいんちょのブログ 開発には Fable という AltJS を使ったのですが、Fableは素晴らしいツールであるにもかかわらず、あまりWeb開発者に知られていない印象を受けます。この機会にFableを紹介する日本語記事を書こうと思います💁‍♂️ Fable とは Fable is a compiler powered by Babel designed to make F# a first-class citizen of the JavaScript ecosystem https://fable.io/ Fable は F#のコードを Babel compatible な AST に変換するツールです。つまり

                                                          小規模なSPAをつくってみてわかったFable(F# -> JS)の良いところ
                                                        • 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
                                                          • How to Write PureScript React Components to Replace JavaScript

                                                            • How does the continuation monad work? | Max Hallinan

                                                              I had trouble using the continuation monad until I understood how it works. Here is what I wish I knew from the beginning. The examples are written in PureScript. What is a continuation? A continuation is the next step in a computation. Consider this expression: 3 * (2 / 2) + 1 We start by evaluating the sub-expression 2 / 2. Let’s replace it with a placeholder for the value of that expression. 3

                                                              • Zipperとは - Qiita

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

                                                                  Zipperとは - Qiita
                                                                • Client-side web programming in Haskell: A retrospective

                                                                  At the beginning of this decade (2010), a few of us Haskellers were exploring how best to do client-side web programming. We didn’t want to write JavaScript. There’s a surprising number of techniques we tried to avoid doing so. There was work coming from academia and industry. Here’s a history of my own experience in this problem space. In 2008, Joel Bjornson and Niklas Broberg published HJScript,

                                                                  • 【毎日自動更新】湯婆婆 LGTMランキング! - Qiita

                                                                    Wrapping up @momeemtさんの記事にある通り、入力を受け取ってそれを変換して出力するというのは、プログラミングの基本ーー大きく言うと、つまり湯婆婆はこれからの"Hello, World"における例題の一つのような気がしています 将棋の原田泰夫九段が提唱された**三手の読み(こうやる、こう来る、そこでこう指す)**に通じるものがあるような気がします 令和のHello World!との呼び声も!(@everylittle さん) 令和2年なのに未だにRaspberry Pi 2しかもっていない私の虎の子のRaspberry Pi 2が毎日自動更新しております コミット 自動更新は、Elixirというプログラミング言語がありまして、そのElixirで作られたNervesというナウでヤングなcoolなすごいIoTフレームワークを使ってつくったアプリケーションで行っております Ner

                                                                      【毎日自動更新】湯婆婆 LGTMランキング! - Qiita
                                                                    • 関数型プログラミングがソフトウェア開発の未来であるべき理由

                                                                      IEEE Spectrumより。 習得は難しいが、コードから不足の事態が発生することは少なくなる。 BY チャールズ・スカルファニ ソフトウェア製品のライフサイクルの中で最も長く、最もコストのかかるフェーズは、素晴らしい機能が最初に想像され、そして作られる、システムの初期開発段階と思うかも知れません。しかし、実は一番大変なのは、その後のメンテナンスのフェーズなのです。プログラマは、開発中に取った近道の代償を払わされることになるのです。 では、なぜ彼らは近道をしてしまったのでしょうか? もしかしたら、自分たちが手を抜いていることに気づいていなかったのかも知れません。開発したコードが多くのユーザに使われるようになって初めて、その隠れた欠陥が明らかになりました。また、開発者が急いでいたのかも知れません。市場投入までの時間的なプレッシャーから、開発したソフトウェアには、そうでない場合よりも多くのバ

                                                                        関数型プログラミングがソフトウェア開発の未来であるべき理由
                                                                      • Malicious code ousted from PureScript's npm installer – but who put it there in the first place?

                                                                        Another JavaScript package in the npm registry - the installer for PureScript - has been tampered with, leading project maintainers to revise their software to purge the malicious code. After a week of reports of unexpected behavior, software developer and PureScript contributor Harry Garrood on Friday published his account of the affair. The installer, invoked by typing npm i -g purescript from t

                                                                        • ホームシアター構築時の座席とスピーカーの位置を決められる「Home Theater Calculator」

                                                                          ホームシアターを構築するにあたり、どのあたりにどのスピーカーを置けば最適なのかというのは部屋によって異なります。それを簡単に算出してくれるのが「Home Theater Calculator」です。 Home Theater Calculator - Blogomatano https://chriskiehl.com/article/home-theater-calculator GitHub - chriskiehl/home-theater-calculator: Set yo shiz up right https://github.com/chriskiehl/home-theater-calculator 「Home Theater Calculator」を作ったのはAmazonで働いている開発者のchriskiehl氏。「Purescriptを学ぶために何かを作ってみた」とい

                                                                            ホームシアター構築時の座席とスピーカーの位置を決められる「Home Theater Calculator」
                                                                          • “バグの出にくい”プログラミング言語「Haskell」「PureScript」の基礎知識

                                                                            ダウンロードはこちら 「関数型プログラミング」は、堅牢(けんろう)性や再利用性を高め、よりバグの少ないソースコードの作成を可能にするプログラミング手法を指す。「Haskell」と「PureScript」は、変数の不変性や強力な型システムといった仕組みを通じて、関数型プログラミングの概念を実現するプログラミング言語だ。 本資料は、HaskellとPureScriptの特徴と、両者の使い分け方を解説する。両言語および関数型プログラミングの基礎を学ぶことで、より信頼性の高いプログラムを開発するためのヒントが得られるはずだ。 中身を読むには、「中身を読む」ボタンを押して無料ブックレットをダウンロードしてください。 連載:HaskellとPureScript

                                                                              “バグの出にくい”プログラミング言語「Haskell」「PureScript」の基礎知識
                                                                            • [GitHub] Markdownの「シンタックスハイライト」に対応している言語一覧 - ねこの足跡R

                                                                              Markdownでプログラムのソースコードを記述する場合に使うバッククォート3つで囲う「コードブロック」ですが、気の利いた環境だと自動的にシンタックスハイライトによって予約語やコメント分などを色分けして見やすく表示してくれます。 GitHubも例外ではなく、各リポジトリに常設されているWikiやREADMEなどをMarkdownで記述した場合は自動的にシンタックスハイライトされます。 メジャーな言語であればそのまま記述すればよいのですが、例えばYAMLやJSONなどのデータ形式や、Apacheの設定ファイルなどそもそもカラーシンタックスに対応しているのか、対応している場合キーワードはなんだろうと迷いますよね。 今回はGitHubが対応しているカラーシンタックスの設定一覧をまとめておきます。 ハイライトのやり方 GitHubで利用できる言語一覧 定義 一覧 おまけ 抽出方法 参考ページ ハイ

                                                                                [GitHub] Markdownの「シンタックスハイライト」に対応している言語一覧 - ねこの足跡R
                                                                              • RecoilにインスパイアされてPureScript用仮想DOMつくった - oreshinyaのブログ

                                                                                追記 ここに記述した内容は既に古くなっています。 内部実装は既に書き直されていますし、Hooks likeなAPIも少しだけインターフェースが変更されています。 興味のある方は直接purescript-grainへ見に行ってください。 動機 Recoilが思ったより話題になっていたので、PureScriptだったらどういう表現ができるかなと思ってつくりたくなった。 そういうわけで、PureScriptにおける仮想DOM実装の3作目が爆誕してしまった。 結果 purescript-grain こういう感じになった 型クラスのインスタンスにした型が各状態になり各状態キーにもなるという感じになった。 実はここの表現に関してはかなり迷って、最初は、シンボル(型レベル文字列)と状態の型をもち、キーの型から状態の型への関数従属性をもった型クラスのインスタンスにすることで表現しようと考えたが、PureS

                                                                                  RecoilにインスパイアされてPureScript用仮想DOMつくった - oreshinyaのブログ
                                                                                • My Doom Emacs config

                                                                                  ;;; init.el -*- lexical-binding: t; -*- ;; Copy this file to ~/.doom.d/init.el or ~/.config/doom/init.el ('doom install' ;; will do this for you). The `doom!' block below controls what modules are ;; enabled and in what order they will be loaded. Remember to run 'doom refresh' ;; after modifying it. ;; ;; More information about these modules (and what flags they support) can be ;; found in modules