Skip to content

Instantly share code, notes, and snippets.

@dfdgsdfg
dfdgsdfg / main.dart
Last active August 18, 2023 09:04
Flutter CJK underline bug workaround
// This code is distributed under the MIT License.
// Copyright (c) 2019 Remi Rousselet.
// You can find the original at https://github.com/rrousselGit/provider.
import 'package:flutter/material.dart';
import 'package:google_fonts/google_fonts.dart';
// This is a reimplementation of the default Flutter application
// using provider + [ChangeNotifier].
void main() {

JS에 커링이 과연 얼마나 잘어울리냐하는 흥미로운 논의가 꽤 있었는데요,

대표적으로 포문을 연 Brian Lonsdorf 의 Hey Underscore, You're Doing It Wrong! 이 있죠. https://www.youtube.com/watch?v=m3svKOdZijA https://www.slideshare.net/drboolean/underscore-18211797

사실 로다쉬나 언더스코어/백본을 통해 막 함수형의 장점이 아카데믹이 아닌 커뮤니티에도 받아들여지고 있었는데 이때부터 커링이라든지, 람다JS나 Fantasy Land등 나름 함수형 고급 주제들이 실 개발자에게도 받아들이기 시작된거 같아요

아무튼, 실질적으로 좀더 살펴볼 거는 알렉스의 Currying is not idiomatic in JavaScript 인데, 커링의 대안으로 어차피 커링이 파셜 애플리케이션에서 쓸거니 bind(null, target)과 같이 bind를 응용하거나 bind(null, target)의 신타스틱 슈거를 만드는 방안등이 논의되긴 했지요. http://2ality.com/2017/11/currying-in-js.html

### Keybase proof
I hereby claim:
* I am dfdgsdfg on github.
* I am dididi (https://keybase.io/dididi) on keybase.
* I have a public key whose fingerprint is D0D3 959B 60B8 5953 605A 0EED 3B6E FDE9 1892 F7E4
To claim this, I am signing this object:
Verifying my Blockstack ID is secured with the address 1NyB9pZbKtpDZLKekBJBU83gE1yJ5fdhFu https://explorer.blockstack.org/address/1NyB9pZbKtpDZLKekBJBU83gE1yJ5fdhFu
@dfdgsdfg
dfdgsdfg / md2docx.sh
Last active February 28, 2019 03:21
Pandoc md to docx every file in folder bashshell
#!/usr/bin/env bash
echo "=========================="
echo "YOU NEED TO INSTALL PANDOC"
echo "=========================="
SRC_DIR='./src'
DIST_DIR='./dist'
files=($(find ${SRC_DIR} -type f -name '*.md'))
@dfdgsdfg
dfdgsdfg / readme.md
Last active January 7, 2019 01:46
closure is capable

https://news.ycombinator.com/item?id=18767592 http://ahungry.com/blog/2018-12-26-Clojure-is-Capable.html

  • 클로저 좋았다. 하지만 큰 프로젝트에 결국 스칼라씀. 타입없이 큰 시스템을 운영 못하겠음
    • -클로저 몇년간 프로덕션에서 사용했음
      • 클로저 스팩 리팩토링 QA에 좋음. 꼭 써라
      • 매크로는.. 왠만하면 쓰지말자. 강력하다는거 나도 알아
      • Homoiconicity, 코드가 데이터는 어떤 랭귀지에서도 좋지
      • 타입? 클로저에서 필요하며 만들어 쓰고 있다. > 78 digits long string type
@dfdgsdfg
dfdgsdfg / readme.md
Created December 28, 2018 04:13
바닐라 자바스크립트에서 함수형

흐흐흐 바닐라 자스에서 언어에 순응하는? 함수형 해보겠다고 여기 저기 기웃거렸는데, 결과적으로 하스켈식은 안되고, 동적 타입인 클로저에 프렉틱스를 많이 보는걸로 결론을.. 리치하키 아저씨한테 한표 겁니다. 거기에 자스의 이터레이터, 제네레이터를 좀더 활용하면서 지연평가도 흉내내고 프로미스 에이싱크 어웨잇으로 비동기도 처리하고 합성하고 이뮤타블 자료형 쓰고 디스 피하고 이정도가 바닐라 자스에서 최선으로 보이네요 거기에 펑셔널 리엑티브를 위해 스트림 정도만 사용하면 바닐라 자스에서 할수있는건 다 한듯. rxjs도 아니고 요렇게 아예 콜백을 기반으로 간단한 스트림 정도 있으면 https://github.com/staltz/callbag-basics

좀더 기대한다면 표준에 추가되는 파이프 오퍼레이터나 옵져버블 이런건데 그건 표준 들어오는거 보면서 해도 될듯하고요 하스켈식으로 하려면 이런게 있긴한데.. 런타임 비용도 높고, 컴파일에 뭐 잡아주는것도 아니고.. 동적언어에서 이렇게 까지?? 싶은..

이런류같이 dev 모드에서는 object.freeze로 얼리고 prod에서는 그냥 생짜로 쓰는 형태로 어느정도 흉내내는게 제일 나은거 같더라고요 아니면 js proxy를 사용한 요런거요

@dfdgsdfg
dfdgsdfg / refined_type.md
Last active December 27, 2018 06:54
refined type

짧은 이해로 해커뉴스를 읽어보니 디펜던트 타입과 유사한게 리파인 타입이란게 있고 이것이 더의미있을수 있다고도 하네요. https://github.com/tomprimozic/type-systems/tree/master/refined_types

넓은의미에서 리파인드또한 디펜던트타입시스템의 일종이라 볼수 있음. 문법에 문제에 가까울수 있다. 리파인드는 디펜던트 타입이 다루고자 하는 문제에 대한 다른 접근으로 주로 SMT Solver, Automated Theorem Prover와 같은것을 언어? 컴파일러? 단에 도입하여 디펜던트타입랭귀지가 바닥부터 타입정의를 잘해야 하는 부분을 자동으로 매꿔준다

디펜던트

  • 톱다운
  • everything is proved, by hand, by the user, who has to build up the whole program from basic blocks
  • e.g. idris, coq, agda, dependent haskell

모나드 펑터같은게 수학의 한분야인 범주론(카타고리 이론)에서 나왔는데, 범주론은 수학에 대한 수학 혹은 메타 수학으로 수학적 방법론을 수학 자체에 재귀적으로 탐구하는 학문인걸로 보여요. ㅎㅎ

범주론이 궁금하시면 링크의 책을 한번 읽어보면 맛은 약간 볼수 있습니다. 번역서도 있고요, 이책을 좀 더 일찍 만났더라면, 수학이 이렇게 기계적이고 지겨운게 아니라 엄청 흥미 진진한거란 생각을 가지게 되었었을 텐데.. 아쉬워요 ㅎ

https://harfangk.github.io/2017/09/08/how-to-bake-pi-review-ko.html

아무튼, 실질적으로 프로그래밍에 빠질수 없는 상태, 비동기, 효과를 복잡하게 다루는데 있어 확실한 기반이 있다면? 안심이 될텐데 그게 수학적 공리라는거죠.

함수 합성을 할때 이 결과가 맞으리라는 보장을 어떻게 하지?

  • 불변값을 기본으로 참조 투명성 확보