Skip to content

Instantly share code, notes, and snippets.

View igrep's full-sized avatar
:shipit:
Writing in Haskell, TypeScript, or Power Automate

YAMAMOTO Yuji igrep

:shipit:
Writing in Haskell, TypeScript, or Power Automate
View GitHub Profile
#!/usr/bin/env python3
import zipfile
import sys
import re
import xml.etree.ElementTree as ET
namespaces = {
'a': 'http://schemas.openxmlformats.org/drawingml/2006/main',
'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships',
@HirotoShioi
HirotoShioi / overview.md
Last active May 15, 2019 02:43
Overview

Quickcheckの極意

QuickCheckで可能となる様々なテスト手法

  • Model based test
  • Metamorphic test
  • Postconditions
  • Round-trip test

テストをデバッグしよう

  • 有効なテストがどの程度の頻度で行われているのか確認しよう。(例:リストに存在しない値に対するlookupがテストの大半を占めていないか)
@meganehouser
meganehouser / MeguroLYAHFGG#1.ipynb
Last active March 11, 2019 11:00
MeguroLYAHFGG#1(すごいHaskell本を原書で読む会 )のノート。@nnm_techさんがまとめたものに実行結果と補足を追加したものです。
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@waddlaw
waddlaw / atcoder-haskell-env.md
Last active March 11, 2021 11:29
AtCoder の言語アップデートの提案内容について

言語アップデートのスプレッドシートが公開されましたので、この文書は2019年7月3日をもって更新を停止します。

透明性を持って広く議論を行うため今後の更新等につきましては haskell-jp/atcoder-haskell-resources リポジトリに移りましたので、そちらをご参照ください。


はじめに

  • 本文書の内容は reddit または haskell-jp 公式 slack の random チャンネル等の内容に基づきます。
#!/bin/env stack
{-
stack --resolver=lts-12.24 script --package extensible
-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE GADTs #-}
@igrep
igrep / associative-law.hs
Created December 19, 2018 06:28
(HAS TYPE ERROR) Test associative law for type-level append (++)
#!/bin/env stack
{-
stack --resolver=lts-12.24 script --package extensible
-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE OverloadedLabels #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeOperators #-}
import Data.Extensible

UnboxedSums

GHC 8.2.1で実装された言語拡張。anonymousでunboxedな直和型を実現する機能。

例: Maybe#

{-# LANGUAGE MagicHash #-} -- Maybe#のハッシュ記号に必要
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE PolyKinds #-} -- a :: TYPE rに必要
@youkinjoh
youkinjoh / extendJSON.md
Last active March 9, 2022 07:37
JSONが対応していない値(NaN/Infinity/Date等)をJSONに保存する方法

JSONが対応していない値をJSONに保存する方法

JSONは NaN / Infinity / -InfinityDate 型等に対応していない。 しかし、JavaScriptのJSONは、これらを解消する仕組みを持っている。 それは JSON.parse の第二引数の reviverJSON.stringify の第二引数の replacer だ。

注意が必要なのは、 Date 型は toJSON メソッドを持つため replacer に値が渡る前に文字列になってしまうこと。 これに対応するには toJSON メソッドを一時退避してしまえば良い。

これらを上手く駆使すれば、JSONに型を保ったまま値を保存し復元することができる。

  • x: 大規模イベントと被ってる
  • -: 小規模のイベントと被ってる
  • +: 休日でない
  • ?: 人によっては休日
  • 指定なし: どれともかぶってない

上に行くほど強い (例えば「休日でなく、かつ大規模イベントと被っている日」はx

{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}