けいぞうのメモ帳

言語設計のお勉強

2017-01-01から1年間の記事一覧

MVarが"thread blocked indefinitely in an MVar operation"する時のデバッグ方法

haskellのmutexであるMVarがデッドロックを起こしたときのデバッグ方法を解説する。 そもそもMVarはhaskellにおけるもっともプリミティブな非同期共有の方法であり、 必要がないならばasyncやstmなどの高度な表現を用いることが推奨される。 環境 MAC OS X V…

mruby-implerr mgem

github.com 設計上起こり得ないエラーを処理する例外クラスのmgemを公開した。 これは、主に作業中のmgemにおいて使われることを想定している。 分岐や変更の多い処理で一時的に例外をなげて、実装に考慮漏れがあることを明示するために用いる。 テストを走…

QUICメモ "Design and Internet-Scale Deployment"

この記事は ACM SIGCOMM “17において発表される The QUIC Transport Protocol: Design and Internet-Scale Deployment の紹介です。 僕が読んだことや関連したdraftをつらつらと記述していきます。 このpaperはIETFにおいて標準化作業中のQUIC transport pro…

haskell のcereal package example

{-# LANGUAGE DefaultSignatures #-} {-# LANGUAGE DeriveGeneric #-} module Main where import Data.Serialize import GHC.Generics data Dist = Dist { distInt :: Int, distString :: String } deriving (Generic, Show) instance Serialize Dist main :…

Data.Binary.GetのGet MonadにおけるMonadFail

できること Get Monadの中でControl.Monad.Fail.failを実行すると、runGetOrFailのときにLeftを取ることが出来る。 runGetOrFailが取る引数はユーザが定義した任意の構造体へのdecoderであるGet Monadのため、 Get Monadの失敗をユーザがハンドルできる。 Mo…

一人ソフトウェアの基礎勉強会 草案

経緯 ソフトウェアの基礎一人勉強会するか— ずっとアニメ見ていたい (@keizo042) 2017年3月6日 #self_taught_sf— ずっとアニメ見ていたい (@keizo042) 2017年3月6日 やり方 twitterのハッシュタグ #self_taught_sf に色々書いていく。 ある程度まとまったらt…

haskellでbinaryにread&write

binary packageのGet/Put Monadを使いBinary classにgetとputを実装することでData.ByteString.Lazy.Internal.ByteStringとデータ構造を変換する事ができる。 ネットワークプロトコルフォーマットパーサの実装の参考として、http2 packageを覗いた。 unsafep…

haskellでUDP

間違えてTCPのサンプルを置いていたから修正した。 UDP user datagram protocol. https://www.ietf.org/rfc/rfc768.txt HeaderのadressはIPv6時にはちゃんと128bitに変わる。 haskell network Network.Socket.ByteString 俗に言うhaskellで書くC言語のコード…

QUIC追っかけ日記01

QUICについて Googleが主導しているHTTP+TLS+TCPに変わる新たなプロトコル。 アップグレードされたHTTPにたいしてそのTLS+TCPの部分を効率よく通信するために策定されている。 まだインターネットドラフト段階で、 https://tools.ietf.org/html/draft-ietf-q…

rust langでturing machineもどき

github.com rustの線形型やリージョン推論をすごいすごい言っていたりするのにコードを書いていないのは良くないので、 rust langの練習用にチューリングマシンエミュレータのようなものを作った。 あまり説明する気のない説明 状態Sと、記号と空白記号の集…