「一定周期」の実現のためにスリープ関数だけを使っている。チャネルに値が積まれる速度は指定した時間よりわずかに長くなってしまうと思われる。GoのTickerは現在時刻を毎ループで取得することで時間を厳守しているようだ。そこはどうしてるのだろう。と最初は思ったのだが......。スリープ中はカウントが止まってしまうようだった。スリープを入れるとめっちゃ時間が延びてしまった。考えてみれば当たり前な気もするがCPUを使っていない時間はCPU時間として計測されないらしかった。(おまけ)Hackageまわりの知見Hackageのアカウントは実名で取っている人が多いが実名である必要はない。長く書いておかないとアップロードのときに警告される(アップロードはできる)。Hackageにアップロードしたものは基本的に修正や削除はできない。修正のためには新しいバージョンをアップロードする。ファイルの軽微な修正ならバージョンを更新しなくても可能。印をつけるにはHaskellのプラグマを用いる。該当部分Haddockの記法ではないので注意。関数を使っていたら処理系が警告を出さないといけないので、よく考えると処理系レベルの記述になっているのは妥当だ。00:30GoのTickerみたいなやつをHaskellで作ったTweet広告を非表示にするもっと読むコメントを書く2017-08-14HaskellとJSON、そしてレコード型haskellHaskellのJSON周りについて、こうやるのがいいんじゃないかという私の現在のやり方を書きます。リクエストを投げてレスポンスを取り出すというのをやります。クライアントライブラリを使います)。みたいにフィールド名が左向きに繋がります。そのくせレコードの更新構文は右向きだったりとか......。いうと色々あるみたいですが以下これを単にlensと呼びます)、こんなことができます。よってコンパイル時に動く関数で、データ型の定義からいろいろなものを自動生成します。演算子がデータ型に対して使えるようになり、フィールド名を右向きに繋げていけるようになります。レコードの更新も同様に右方向でできます。紹介していると思います。レコード型のフィールド名って別のレコード型と衝突するんですよね。衝突を避けるためにフィールド名のプレフィクスとしてレコード名をつけたりします。利用するときにプレフィクスがいらなくなるわけですね。この例だとまだありがたみが薄いですがレコードが増えてきてレコード名が長くなってくると大変便利です。(というかないと破綻する)。便利なので使いましょう。不満がある場合は、lensライブラリにはフィールド名の扱いをより自由にカスタマイズする方法も提供されているみたいなのでそれを使うといいでしょう。する方法を紹介しましたが、拡張可能レコードを使うのが今風でより良いかもしれません。まとまっていると思います。我々は怠惰なので複雑なレコード値を構築するのが面倒です。レコード型にデフォルト値があって必要なフィールドだけを変更できると便利なことがあります。入力値をこれを使って表現してみます。その型のデフォルト値を意味します。自作の型についてはユーザがインスタンスを定義する必要があります。2つの方法で定義できます。型についてある種のメタデータを生成することを可能にします。