IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

JSONにLensでアクセス

JSON access by Lens

Haskell Patterns

Reader Pattern The ReaderT Design Pattern https://michaelxavier.net/posts/2016-04-03-Enterprise-Haskell-Pattern-Lensed-Reader.html Has Pattern The Has Type Class Pattern – Hacker Noon Handle Pattern jaspervdj - Haskell Design Patterns: The…

Megaparsecで状態を扱う

paserで状態を管理したい場合があります。 Attoparsec attoparsecでは、ライブラリ自体で、parser利用者側の状態を管理する仕組みがありません(間違っているかも)。なので、下記にあるとおり、StateTを使うことになります。 haskell - Does Attoparsec sup…

PolyperseのText.Perseの持ち上げ

Text.ParserCombinators.Poly.State パーサーで状態を扱いたいと思って、Polyperseを見ていました。Stete用のコンビネータがあるのですが、そのモジュールには基本的なコンビネータがないので、どうしたものかと思いました。Steteでも使えるようにText.Perse…

ドット力

Haskellはドット力が必要 Power of Dots

Polyparseを試す

polyparse: A variety of alternative parser combinator libraries. Polyparse example

SQLServer Expressのインストール

SQLServer Expressの入手 SQL Server 2017 Express エディション | Microsoft SQLServer Management Studioの入手 SQL Server Management Studio (SSMS) のダウンロード | Microsoft Docs SSMSを起動 -> Windows認証でログイン サーバを選択 -> プロパティ -…

EDEでincludeする例

includeするファイルは良しなに読み込んでくれる。 An example of including template in EDE

EDEでカスタムの関数をつかう例

Custom function Example of EDE

stackでghciを使った時の履歴の場所

履歴はghci間で共有されているようです。 ghciに入りなにか入力する。 $ ghci GHCi, version 8.0.1: http://www.haskell.org/ghc/ :? for help Prelude> xxxxxxx <interactive>:1:1: error: Variable not in scope: xxxxxxx Prelude> :q Leaving GHCi. stack ghciを起動し</interactive>…

MySQLとHaskellで絵文字のやり取りをする

MySQL側はテーブルのcharsetをutf8mb4などにする。(utf8ではない) haskell側はStringで扱いputStrLnなどを使う。(printはコードポイント(?)で表示されてしまう) Hemoji between MySQL and Haskell

HaskellでMySQLの地理情報を扱いたい(3)

GeoJSONでのやり取りもなんか出来てるっぽい。(未コミット) MySQL <--> GeoJSON <--> Haskell (Client driver + geojson library) GeoJSON communication between MySQL and Haskell

‘Distribution.Package’ does not export

geojsonパッケージをビルドした時に ‘Distribution.Package’ does not export ‘PackageName(PackageName)’ というエラーでビルドに失敗しました。 エラーになっているファイルはSetup.hsファイルです。 module Main (main) where import Distribution.Simple…

geojsonパッケージのインストール

aesonパッケージの上のレイヤでGeoJSONを扱うためのパッケージです。 geojson: A thin GeoJSON Layer above the aeson library hackageでは2018/02時点で、1.3.1ですが、hackageにアップロードされているモジュールと、githubにあるモジュールに差異があるよ…

MySQLでのGeometry型のselect

テキストで取得 mysql-sql> select st_astext(geo) from geo_tbl; +--------------------------------------------------------------------+ | st_astext(geo) | +--------------------------------------------------------------------+ | POINT(30 10) |…

Gistのprivateとpublicの変換

privateなGistを作っていたとする。 Editを押す。 Make Publicを押すと、privateからpublicに変わる。

HaskellでMySQLの地理情報を扱いたい(2)

いろいろなGeometryのselectと、insertのサンプル Geometry Type Sample on MySQL

HaskellでMySQLの地理情報を扱いたい

まだコミットできるレベルにないけど、検証コードはできた。 A point geometry sample on MySQL

Haskellで地理情報を扱うためにGeosパッケージのインストール(2018年02月時)

gitからモジュールを取得しておきます。 git clone https://github.com/ewestern/geos.git 開発中のライブラリから使用したいので、そのプロジェクトにて、普通にインストールしようとすると、geosライブラリが不足しているためエラーになりました。 $ cabal…

関数のコンテキストの型はユニークに解決される

言われてみれば当たり前なのですが、これに嵌りました。 Num型を複数とる関数があって、Int型やDouble型などいろいろパラメータに与えたかったのですが、コンパイルエラーがとれませんでした。問題点をシンプルな例で示すと以下のようになります。 Num型を複…

git statusで追加したファイルが表示されない

新規に作成したファイルがgit statusで表示されず、少し焦りました。.gitignoreの指定対象になっていたようです。無理やりgit add``をしたところ、メッセージに教えてもらいました。.gitignore```の設定を修正しました。 $ git add src/DataBase/MySQLX/Expr…

MySQLのサンプルデータベースのテーブル定義

いつも忘れるのでメモ mysql-sql> use world_x; Query OK, 0 rows affected (0.01 sec) mysql-sql> show tables; +-------------------+ | Tables_in_world_x | +-------------------+ | city | | country | | countryinfo | | countrylanguage | +---------…

Haskellのソースコードの言語拡張をいい感じにフォーマットする

Haskellのコードの先頭に書くやつで、左側の({-#)は揃ってるけど右側(#-})を揃える {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE TypeOperators #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE OverloadedLabels #-} …

Haskellでコンパイル時の特定のワーニングを抑制する

4.8. Warnings and sanity-checking To turn off any warning, simply give the corresponding -fno-warn-... option on the command line. replでは、 > :set -fno-warn-unused-do-bind でいけます。

Haskellのドット演算子(.)

f . gと書いたときにgの結果がfに渡されるイメージで、Unixの|パイプに例えられます。 *> :t (.) (.) :: (b -> c) -> (a -> b) -> a -> c 表現は正確ではありませんが、渡される結果が「1つ」でなくても、ドット演算子は使えます。 > let f = undefined :: b…

CPUの作り方

CPUの創りかた作者: 渡波郁出版社/メーカー: 毎日コミュニケーションズ発売日: 2003/10/01メディア: 単行本(ソフトカバー)購入: 35人 クリック: 445回この商品を含むブログ (193件) を見る 読者が具体的なイメージを持って理解出来るように、文章が工夫さ…

GhcLintでコードをチェックする

結果集計 $ grep "^src" doc/wk_lint_result.md | cut -d " " -f 4- | sort | uniq -c | sort -r 18 error| Suggestion: Move brackets to avoid $ 8 error| Suggestion: Redundant $ 7 error| Suggestion: Redundant bracket 4 error| Suggestion: Avoid la…

Haskellのエスケープ(\)の挙動

function \ string "a" "\a" "\\a" "\\\a" repl "a" "\a" "\\a" "\\\a" length 1 1 2 2 mapM_ print 'a' '\a' '\\''a' '\\''\a' show "\"a\"" "\"\\a\"" "\"\\\\a\"" "\"\\\\\\a\"" Haskell Escape

mysqlshでのアクセス

すぐ忘れるのでメモ $ mysqlsh -u root -P 8000 Creating a Session to 'root@localhost:8000' Enter password: Node Session successfully established. No default schema selected. Welcome to MySQL Shell 1.0.9 Copyright (c) 2016, 2017, Oracle and/o…

HeteroMapのサンプル

a hetero-dict sample