昨日書いたコードに対して、showをいじってみる。"Hoge"などとすると、Atom型は常に"Hoge"と表示される。Atomの場合はdataじゃなくてnewtypeで良い。デストラクタとかデコンストラクタと呼ばれるやつを定義する。形で受け取れるようにするのを避けるため、一旦unAtomしてAtomすればよいみたいな感じでつかう(と思う)。一度読んだはずだが完全に忘れている。MoleのShowを自分で定義する。最終的にこんな感じになった。みたいなことをしていたのだが、右辺で分離して受け取るようにすればよかった。何気に再帰であるが、終わりになるやつの書き方で苦労した。[]で問題ないことが分かった。みたいに表示されるので入れている。空文字は"\NUL"で入れるらしい。""だと""が表示されるのでダメだった。"\NUL"あと、isAtomは型がAtom指定しているので、Atom以外を与えるとエラーになる。した方が良いのかと思ったが、本体でAtomって書いてあるのでそれはだめっぽい(Atomだろって怒られる)まぁ、isUpperとかもCharじゃないと怒られるので良いことにした。dataを使うかnewtypeを使うか、whereを使うかletを使うかとか、ちゃんと条件を網羅出来ているのか、再帰で書いたときの終止条件が書けているのか、など課題が多い。23:57Haskellの勉強中(勉強記録メモ)Tweet広告を非表示にするもっと読むコメントを書く2020-01-16Haskellを書き始める(勉強進捗メモ)Haskell初心者なので...。昨日ふと思い立って書き始めた。読むのと書くのでは全然違う。知ってることと出来ることは違うように。この記事はどこで躓いていたのかを記すだけのメモ的な日記です。有益なことは書かれていません。半月に1度(月2回)を目途に進捗を書いていきたい。いえ、普段投稿する記事とどう分けるのかは何も決まっていません。最後が:}である点に注意。何度も書くようであればファイルに書いた方が良い。Showこれをつけないと、GHCi上で表示しようとしたときに怒られる。識別子dataの左辺と右辺で型とか値とかコンストラクタとか色々呼び名があってまだ整理できていない。今後、このあたりを参照、調査。Show次のようなエラーが出る。‘Atom’Stringを受け取るやつとCharを受け取るやつで名前を変えておく必要がある。いえば本にも書いてあったな...。Show右辺のMoleを消すとダメ。Data.Charを入れるPreludeに入っているのは本当に基本的な関数だけ。Data.CharするまえにiSUpperを使おうとすると怒られる。itisUpperはCharに対する関数なので、Stringを引数に与えても当然エラー。"a"優先順位づけに()をたくさんつける。ように括弧で囲わないと引数の数があわないぞ~みたいなことを言われる。そもそも違う?要チェック。タプルの()と優先順位の()がわかりづらいなと思っていたが、前者は,が必要。後者は不要なので見ればわかることだった。本当はもっと厳しいチェックにする(既存のものに含まれるかをチェックする)が、今回は書き方を学びたいので、1文字でかつ大文字であること。2文字で1文字目が大文字で2文字目が小文字であることをチェックし、そのいずれかであればTrue、それ以外はFalseという関数にしてみた。Falseas記法x@(a:b:_)を使うのは、文字数と内部の文字それぞれをチェックしたいため。(&&)みたいにコンソールで確認すればよい(なければ怒られるので)。(&&)は演算子&&の関数での書き方。いたるところに()があるが、基本的に左結合で持って行かれてしまうので。otherwiseは万能ではない...いや、最初のマッチで拾えれば、確かに常にTrueなのだが、上の例で、x@(a:b:)は少なくとも2文字ある状態でマッチし、1文字の場合はマッチしない。この場合、その式?はスキップされるので、otherwiseは実行されない。そのため、1文字の場合は別途定義をしてあげる必要があるし、そもそもコレだとは不要な気がする。通ったのでそのままだが、また調べよう。"a")はFalseを返す。なると、最初のotherwiseは不要そうだな...。あとでまた書き換えよう。関数に直接与える場合は()つけないと2引数と思われてしまうが、先に変数に代入しておけば()は不要。True実際に存在する元素名であるか?をチェックする場合はあらかじめそれらをリストに入れておいて、その中にマッチするものがあるか?のチェックが必要。その前チェックに↑のチェックを入れても良いが。一応それっぽい動きをしている。Falseまとめやはり、コードは書いてなんぼ...。読むだけより数倍~数十倍の効果がある。前知識がないと無駄に時間を溶かすのも事実なので、バランスが難しいなと。Haskellで色々遊んでみたいので、ゆるい記事が続きますが、ここは私の備忘録なので...。簡単なパーサーを書こうと思います。08:30Haskellを書き始める(勉強進捗メモ)Tweet広告を非表示にするもっと読むコメントを書く2020-01-08Wordをちゃんと使いたくて、スタイル周りがわからなかったら「疑問解消!しくみからよくわかるWord再入門」を読もうWordタイトルで言いたいことを言い切りました。そんなわけで、何度かTwitterの方では言及しているこの本ですが、Wordは出来ることが多い割に使い勝手、設定し勝手がよくわからず、スタイルを使えばいいのはわかるけど、具体的にどうすれば...みたいな学習コストが無駄に高い気がします。使いこなせれば、それなりに良いツールだと思うのですが。それは良い本がないからなんだよなぁ...とずっと思っていたのですが、去年みつけた、「疑問解消!しくみからよくわかるWord再入門」という本が私的にとても良かったです。gihyo.jpこの、Wordで作ったWordの本シリーズは絶版も含めて何冊かあるのですが、ひとまずこの本を読んでおけばよいかと。他のタイトル気になったらそちらも調べてもらえれば。内容的に重複する部分もあるので、差分の内容にどのくらい価値があると思うか次第で他の本の必要性は変わるかもしれません。私は1ページ、1文、1語でも「この本を買わなければ至ることが出来なかった」と思える内容があればその本は「価値がある」ので、私の意見はあんまり参考にならないので...。この記事自体の否定をwさて、それでも素のWordで"ちゃんと"書くのは大変ですね...そういうときはPandocでmarkdownから変換するのが良いでしょう。すればスタイルがちゃんと設定されるので。文字レベルだとされてなかったり、カスタムスタイルを指定する云々で色々あるんですけど、それはまた別の話として。ちなみに、スタイルの話だけでなく、ページ設定の話とか、段落とはみたいな話もあり、知見の塊みたいな本です。最新のWordに対応した版を、出してほしいなぁ...と思うのでした。Word使う方は持っていて損ないと思いますので、是非見てみてくださいな。本音は、これを見たうえで自分なりの知見を持ってるような人とかと、この本についてやWordについてあれこれ議論したい、そういう人を増やしたいという気持ちです。ほかにもおすすめの本があれば、是非教えてください。Word部分的にWriterを書き換える必要がある。出来ないと断言はできないものの、現状私の能力では難しいです。ASTでいうところのImageはdocx中では<graphics>タグに置き換わりますが、これが結構複雑で...。Writerの処理なので、それをまるまる置き換えないといけない。テンプレートで一律処理ではなくて個別の画像に対応が必要なので、変換の時点でなんとかしないといけなさそう。前後にタグを仕込むタイプでは難しいだろなとも思っています。一方で、画像を中央に寄せることは可能で、変換後の対応するスタイルを設定するだけでOKです。これはまた別記事にて。Wordの画像の回り込みの処理を入れるのはちょっとしんどい(メモ)Tweet広告を非表示にするもっと読むコメントを書く2020-01-05コメダで作業をしてみた生活2020年は1/1から作業を開始した。喫茶店とかでの作業、あまりやったことがなかったのですが、近所の小さな喫茶店とかで原稿の校正とかしていたらそれなりに捗ったので、今年もやってみようと思っています。正月期間は個人商店は基本的にお休みになっているので、ちょっと歩いてコメダに行ってみました。何気にここのコメダ行くのは初ですね量は確かに多いコメダは食べ物の量が多いとよく言われますが、実際注文してみると結構なサイズですね。いえ、パンなのでそれなりにぺろりと平らげてしまう量。太るんだろうけど...。パンだとあんまり腹持ちが良くないのが難点?ですね。コーヒーの味やっぱり専門店に比べると、一歩劣るという感じですが、専門点と比べたらまぁそうよね...。言え値段的には小さな喫茶店でも同程度なので、むしろそっちが頑張っている気がする。量多めが出来るので、量飲むならコメダも良いかな。カフェインレスコーヒーカフェインレスもあったので飲んでみましたが、味はやはり普通のコーヒーの方が美味しいかな。何杯も飲むとカフェイン多すぎるので、2時間くらい滞在する関係でお金を落としていく意味でも追注が必要なので2杯目はコレですね。試してみたけど簡単に使えたので良かった。Twitterしつつ調べものしつつ書きモノするだけなら十分ですね。そんな感じでコメダデビューしたお話しでした。総合的には満足ですが、逆に地元の小さいお店もアリだな...と思わせる結果となりました。用途に合わせてそれぞれ使っていきたいですね。あと、良く使うお店にはちゃんとお金を落としていきましょうね...。PandocのWordテンプレートはテンプレート出力よりも通常のファイル出力結果を使った方が良い。Word2020年初Pandoc記事です(前の2記事も実質Pandocですが)さて、PandocでWord形式の出力ファイルが必要な場合、素の出力では見づらかったり自分なりにカスタマイズしたいということがよくありますね。見た目を調整したテンプレートを指定するとうまくいきます。https://pandoc.org/MANUAL.html#option--reference-docテンプレートとスタイルを使うと、見た目が同じで内容が違うドキュメントを生成するのが楽になりますPandocが生成するWordドキュメントは、もとのファイルの構造に基づいて、それぞれにスタイルが適用されます。そのため、それに必要なスタイルがあらかじめ含まれているのが望ましいです。マニュアルには、以下のようにしてテンプレートファイルを生成せよと書かれています。reference.docxしかし、実際に使用してみるといくつかのスタイルが不足していることに気づきます。PandocはPandocの生成したドキュメントをテンプレートにすることが出来ます。言えば本文要素以外がほぼ残り、本文が差し変わるという挙動です。Pandocが生成したドキュメントなので、Pandocが使用するスタイルは全て入っているという点がメリットです。本文は何でも良いので、PandocへのPATHが通っているなら例えば次のようなコマンドでテンプレートファイルが生成されます。reference.docxこの方法であれば、実際に使用するスタイルが全て含まれているので安心です。いつの間にか**Tok系の文字スタイルに基準スタイルが設定されていて、1年半前の努力は何だったのか...という気もしますが。スタイルの設定については技術書典向けに鋭意作成中...。終わるのだろうか...?追記Issueがあった。あったのだが、この件についてはうやむやというか、触れずにcloseしている。PandocのWordテンプレートはテンプレート出力よりも通常のファイル出力結果を使った方が良い。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。