Skip to content

Instantly share code, notes, and snippets.

View TS JS F#style pipeline operator is monad.
const identity = a => a;
const customOperator = op => f => set =>
Object.defineProperty(set, op, {
value: function (a) {
return f(a)(this);
}
});//returns new set/object
Function.prototype |>
@stken2050
stken2050 / 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える
Last active Sep 17, 2020
関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える
View 関数型プログラミングとオブジェクト指向の抜き差しならない関係について整理して考える
##関数型プログラミングとオブジェクト指向の抜き差しならない関係について考え、整理したい
Googleで適当に検索すると
####オブジェクト指向 関数型プログラミングに関連する検索キーワード
オブジェクト指向プログラミング関数プログラミング比較
オブジェクト指向関数プログラミング
オブジェクト指向関数型違い
関数型言語オブジェクト指向
手続き型オブジェクト指向関数型
オブジェクト指向vs関数型
View react-tutorial2016
#React 入門 2016 あるいは statelessさらにprop不要で関数型・宣言型的にコーディングする手法
#React(0.14+), JavaScript(ES6)は変化が激しすぎるのでReact入門記事を全面改訂します
当ブログで昨年2015年4月にUPしたReact解説記事(2つ)
- [React (.js Facebook)解説 関数型プログラミングに目覚めた! IQ145の女子高生の先輩から受けた特訓5日間 サポート記事 静的HTML編](http://kenokabe-techwriting.blogspot.jp/2015/04/react-js-facebook-iq145-html.html)
@stken2050
stken2050 / index.html
Created Apr 5, 2019
unlimitedjs + MDC login
View index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<!-- Required styles for MDC Web -->
<link rel="stylesheet" href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css">
<style type="text/css">
View cjs-esm.js
{
//Issue:
//not compatible with TypeScript Types
// "@types/react"
// "@types/react-dom"
//TypeScript
// import * as React from "react";
// import * as ReactDOM from "react-dom";
View primitive createObject
const typedPrimitive = (I: Function) => (i: undefined) => {
const derived = Object(i);
Object.setPrototypeOf(derived, Object(i));
const typeProperty = {
enumerable: false,
configurable: false,
writable: false,
value: I
View Monoid implementation JavaScript
{
const equalJSON = a => b => JSON.stringify(a) === JSON.stringify(b);
const logEq = a => b => {
const result = equalJSON(a)(b);
console.log(result);
return result;
};
@stken2050
stken2050 / blogger-bootstrap.xml
Last active Jun 14, 2018
blogger-bootstrap.xml
View blogger-bootstrap.xml
<?xml version="1.0" encoding="UTF-8" ?>
<html xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'>
<head>
<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/>
<b:if cond='data:blog.isMobile'>
<meta content='width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0' name='viewport'/>
<b:else/>
<meta content='width=1100' name='viewport'/>
</b:if>
<b:include data='blog' name='all-head-content'/>
View javascript monad
const isFunction = (m) => (typeof m === "function");
const isHigherOrder = (f) => isFunction(f("foo"));
const compose = (f, g) => (x => g(f(x)));
const isMonad = (m) => !(typeof m.val === "undefined");
const M = (m = []) => {
const f = m1 => {
const m1S = isMonad(m1) ? m1 : M(m1);
return !isFunction(m)
? M(m1S.val(m)) // a-f chain
@stken2050
stken2050 / #関数、値、圏論、モナド、評価戦略、純粋関数型、その辺りの「数学的基礎」を教える
Last active Feb 3, 2018
#関数、値、圏論、モナド、評価戦略、純粋関数型、その辺りの「数学的基礎」を教える
View #関数、値、圏論、モナド、評価戦略、純粋関数型、その辺りの「数学的基礎」を教える
純粋関数型言語の定義は論争があるらしいです。
多くの人が純粋関数型言語は副作用がない、という文脈で語っています。
ところが、よくよく調べてみると、その「副作用」というのがかなりトリッキーなワードで、彼ら自身がIO(入出力)と副作用の関係、さらに参照透過との関係があまりよくわかっていない感じで、原因と結果がはちゃめちゃな言葉遣いをしているのをみます。
私が純粋関数型っていうのは遅延評価戦略が不可分だ、って書いていたら、
副作用の排除(この言葉がどういう感じで彼らに使われているのかが未だよくわからない)が重要だ、いう文脈でJavaScriptを純粋関数化する!という優秀な人が現れ、JavaScriptにHaskellのIOモナドを実装してしまいました。
そのコードを見ると、それはJavaScriptに遅延評価を実装する典型的なコードであり、挙動の説明も完全に遅延評価でFRPの話でした。