myuon_myon
ちなみに文字リテラルでも同様のことがおきます
(`$charlit = \'([^\\']|\\.)\'`でparse error)
(`$charlit = \'([^\\']|\\.)\'`でparse error)
$strlit = "\""([^\n\"\\]*(\\[.\n])*)*"\""
$
で始まるやつは文字集合を表します。正規表現を表すのは @
から始まるやつです。\" (ほにゃらら)* \"
という感じに書けば良かったと思います。company-lsp
を使用しているのですが、こちらで予約語の補完は効いていますか?import
など予約語の補完が効かず、スニペットにがんばってもらっている状態です。0.21.2.0
まで上げようとしたところエラーになりました。cabal から見えていないようです。Configuring app-0.2.0.0... Setup: At least the following dependencies are missing: miso -any builder for '/nix/store/c7b2w4d0p1wnnjl3ajayarc12y4jvdgp-app-0.2.0.0.drv' failed with exit code 1 error: build of '/nix/store/c7b2w4d0p1wnnjl3ajayarc12y4jvdgp-app-0.2.0.0.drv' failed
miso-0.12.0.0
で成功した際の app
のビルドおよび miso-0.21.2.0
ライブラリ自身のビルドと同じで、`miso` の rev
と sha256
は miso 最新 release から nix-prefetch-url --unpacked
で取ってきています。$ cat default.nix { pkgs ? import ((import <nixpkgs> {}).fetchFromGitHub { owner = "NixOS"; repo = "nixpkgs"; rev = "a0aeb23"; sha256 = "04dgg0f2839c1kvlhc45hcksmjzr8a22q1bgfnrx71935ilxl33d"; }){} }: let result = import (pkgs.fetchFromGitHub { owner = "dmjio"; repo = "miso"; sha256 = "07k1rlvl9g027fp2khl9kiwla4rcn9sv8v2dzm0rzf149aal93vn"; rev = "bb2be3264ff3c6aa3b18e471d7cf04296024059b"; }) {}; in pkgs.haskell.packages.ghcjs.callPackage ./app.nix { miso = result.miso-ghcjs; } $ cat app.nix { mkDerivation, base, miso, stdenv }: mkDerivation { pname = "app"; version = "0.2.0.0"; src = ./.; isLibrary = false; isExecutable = true; executableHaskellDepends = [ base miso ]; description = "First miso app"; license = stdenv.lib.licenses.bsd3; }
map
, filter
, foldr
, Maybe
, Either
などに言及するものは多いですが、もう少し行数を稼いだものを提示したいなとApplication
型に Reader
モナドで設定をもたせたいのですが ReaderT
での変換の仕方がイマイチつかめません。どんなふうにすればよいでしょうかApplication
に変換する関数あればよさそう?Foldable
の null
メソッドを意図しない型に対して適用してしまったことによるバグに遭遇したため、同じミスをやらかしている箇所がないか探したい、というのが主な目的です。> ((<>) :: _) "a" "b" <interactive>:7:10: error: • Found type wildcard ‘_’ standing for ‘[Char] -> [Char] -> [Char]’ To use the inferred type, enable PartialTypeSignatures
type Foo = [Int]
type Foo = ([Int], Bool)
Foo
に対して意図せず null
を適用していてもわからない(コンパイルエラーにならない)、という状況なので...null
などを意図しない型に適用してしまっている」箇所がそもそもどこかわからない(それを知りたい)という状況なのでその方法は使えません... :disappointed:null
や length
の定義を書き換えるというのは有効ですね :bulb:Prelude
にある型クラスじゃないと使いにくいテクニックではありますが。-- | 入力されたフィールドがcheck形式である必要があるか判定する inputTypeBoolOrCheckBox :: Monad m => FieldView site -> m Bool
Data.List
の`take`, drop
に相当する関数をご存知でしょうか?Data.Csv.Stream
パッケージを使い、数百MBのCSVを読んで、100件毎にデータベースに書き込む、といった処理を作っています。do xs <- parseCsv saveLines xs where saveLines xs = saveToDb (take 100 xs) >> saveLines (drop 100 xs)
Data.List
の take
, drop
に相当する関数」はないはずです。Traversable
はあくまでも全体をなめることができるだけなので。IsSequence
型クラスのインスタンスであればできるみたいですが... http://hackage.haskell.org/package/mono-traversable-1.0.11.0/docs/Data-Sequences.html#t:IsSequenceStreaming to CSV is not 100% complete at this stage, and doesn’t support encoding to CSV with a header yet
いったん(遅延IOの力を信じて)リストに変換しちゃう
toList
しただけですが、意図どおり、メモリ消費を抑えつつ巨大CSVファイルの読み込み&パース&DB書き込みができました。