Skip to content

Instantly share code, notes, and snippets.

@dfdgsdfg
dfdgsdfg / uppdate.fish
Created April 27, 2016 13:41
uppdate.fish
function uppdate -d "Swiss knife for package update."
set -l package_managers "brew" "npm" "pyenv_pip" "gem" "composer" "fisher" "nvim_plug"
set -l update_global
switch "$argv[1]"
case \*
update-global-package-managers
end
function exists
@dfdgsdfg
dfdgsdfg / noob_question.fish
Created April 28, 2016 10:01
noob_question.fish
function uppdate -d "Swiss knife for package update."
set -g global_package_managers "brew" "npm" "pyenv_pip" "gem" "composer" "fisher" "nvim_plug"
switch "$argv[1]"
case \*
check global
update global
end
function brew
@dfdgsdfg
dfdgsdfg / short_noob_question.fish
Last active April 28, 2016 10:20
short_noob_question.fish
set -g items "item1" "item2" "item3"
function itme1
set -g item1_exists "false"
switch $argv
case check
if exists item1
set item1_exists "true"
end
@dfdgsdfg
dfdgsdfg / Logger.js
Last active April 21, 2017 06:23
Simple logger for browser side
/* eslint-disable no-console, consistent-return */
const logger = (function Logger() {
const prefix = "[MYAPP]";
const logLevelPreset = [
'SILENT',
'ERROR',
'WARN',
'INFO',
'DEBUG',
@dfdgsdfg
dfdgsdfg / README.md
Last active December 13, 2017 14:19
2017년에 함수형 자바스크립트 사용하기

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

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

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

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

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

  • 불변값을 기본으로 참조 투명성 확보
@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
@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 / 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