サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Wikipedia
qiita.com/aiya000
TypeScriptの静的型付けの方針(?)で、静的に代入を許すことができてしまいます。 しかもここで紹介する、x.aを変更する方法では、asなどのunsafeな操作は必要としません。 結論 結論からお話します。 下記コードで、x.aが10に変更できます! const x: { readonly a: number } = { a: 42 } const y: { a: number } = x // x.aが変更されている y.a = 10 console.log(x) // { a: 10 } // コンパイルエラーはない { a: number } extends { readonly a: number }になっているから = { a: number }の変数に{ readonly a: number }の値を代入できるからです! 読み始める前に 本稿の主題は「静的型付き下でrea
ハロー、ハッピーVimmer 今日はVim pluginと、それに対する僕の設定を紹介します。 僕の.vimrc 僕の.vimディレクトリ マクロの実行をdot repeat可能にした まずはシンプルかつ最強なやつです。 kana/vim-repeat: Vim plugin: Enable to repeat last change by non built-in commands dot-repeatは通常1つの動作のみを繰り返しますが、これを使えば、以下のような繰り返しが可能です。 qa マクロ記録開始 dt( 動作1 dib 動作2 3lD 動作3 +q マクロ記録完了 @a マクロを発動 . 下に移動してから、上述のdt(から3lDまでを実行 . 下に移動してから(略 . 下に移動してからry 繰り返し Webページを非同期で表示するようにした これは自作プラグインで、まだドキュ
function foo(x) { return bar(x + 1); function bar(y) { return y + 10; } } function baz() { return bar(20); // ここからはbarにアクセスできないので、便利 }
皆さん、Happy メリー Haskell クリスマス アドベントカレンダーお疲れさまでした 今日はズバリ「人はなぜ、パーサーに惹かれるのだろうか?」ということを追ってみます! (もとい文字列検索等で正規表現ライブラリではなく、パーサーコンビネーターライブラリを使うようになった人(僕)の、それまで道筋を。) 以下、筆者の私感による説明になります。 この記事の対象者 / 非対象者 この記事の対象者 パーサーコンビネーターが難しいものだと思っている人 パーサーコンビネーターをカジュアルに使ってみたい人 この記事の非対象者 パーサーコンビネーターの入門をしたくてこの記事にたどり着いた人 すみません、この記事は具体的な入門を促す記事ではありません。 参考までに…… 僕はこの本でパーサーコンビネーターへの入門を果たしました プログラミングHaskell なぜ正規表現でなくパーサー(コンビネーター)を
TemplateHaskell不要なレコードアクセサgeneric-len(およびGeneric・DeriveGenericとは)Haskellghclens おはこんにちクリスマス〜〜🤟🙄🤟 今回はmakeLenses, makePrismsの代替となるgeneric-lensについて紹介します! 本稿は以下の概念を既知とします。 lens: Lenses, Folds and Traversals DefaultSignatures TypeApplications ただしそのいずれかがわからなくとも、単なるlens事例の一つのアバウトとしてもお読みいただけるかもしれません。 まとめ DeriveGeneric GHC.Generics - HaskellWiki GHC.Generics Data.Aeson learning-Haskell/Main.hs - aiya000
まとめ コード全文は結構長いのでこちら learning-Haskell/verbose_errors.y - aiya000/learning-Haskell - GitHub 重要なのは下記の2点です。 lexerがTokenと共にTokenPosを集積すること %errorhandlertype explist 仮定する知識 happyでパーサを書ける レキサ、パーサが何をするものか、なんとなくだけどわかる MonadTransとGeneralizedNewtypeDerivingでモナドを組み立てられる optional(わかるとソースが見やすい) lensが使える ここでしたいこと 「Happyでパースエラーで列行番号とどんなミスマッチが起こったか報告する」とは? それは… happyはデフォルトで、詳細なパースエラーを表示するための機能を有効にしていません。 ですので、パースエ
(コンパイル時と言ったな、あれは嘘だ。これは多分プリプロセス時に解決されます) 起 Haskellでは、関数が単純に例外を出す可能性がある場合はEither eもしくはMaybeを使うと思います。 readFooFromSomewhere :: Bar -> Either Text Foo readFooFromSomewhere bar = let result = {a result of a some calculation} case result of Baz -> Left "残念" Poi -> Right {some}
前提 例えばJavaを例に上げると、全てのclassはObjectを継承しており、Objectがequalsメソッドを持つので 異なる型を比較(equals)できてしまいます。 class Foo {} class Bar {} public class Test { public static void main(String[] args) { System.out.println(new Foo().equals(new Bar())); } } // {output} // false これはインスタンスをアップキャストしたい際などには便利ですが、 私個人としては「ある値x,yが異なる型を持てば同じものではない(x != y)」というものを認めた方が 誤りが発生しにくいと考えています それをおおよそ認めたとも捉えれられる言語の1つとしてHaskellがあります Haskellは異な
qiita.com
この記事はブログ版の引用です。 ブログ版では、一部のスタイルが装飾されている。 もしくはQiita版では崩れているスタイルが正しく表示されます。 また、ブログ版の内容は優先して修正され、Qiita版の内容は古い場合があります。 この記事はHaskell (その3) Advent Calendar 2017の 21日目の記事です! この記事にはSS表現、ラブライブが含まれます。 これらが苦手な方はブラウザバックを推奨します。 記事一覧 - ことり、穂乃果と一緒に学ぶHaskell(入門) 記事一覧 - にこ、希と一緒に学ぶHaskell(番外) 更新履歴 - μ'sと一緒に学ぶHaskell 前回の型ライブ! 放課後、部室に集まって、よく知られたGHC拡張について語り合う にこっち と うち。 希「GHC拡張っていっぱいあるんやね!」 にこ「Haskell reportに『実験的な機能を取り
※記事中のソースコードは擬似的なものです ※記事ではVisualStudioのWindowsフォームアプリケーションを題材にしていますが MFCや他のGUIアプリケーション開発でも活用できるかと思います WPFでないWindows Form Applicationでは、class MainForm : FormのようなForm継承クラスが1つの画面を表し、 MVCで言うViewとControl…そしてModelとしての機能も、そのクラス内に集約しがちです。 例えば以下です。 ※目と頭に悪いコードですので、内容を詳しく考える必要はありません class Hogeから取ってきたデータを ボタンクリックにより検索するフォームのイメージ例 ※Hoge.FetchAll()はDBからなんらかのデータ列を配列として取ってくるメソッドとする namespace Foo { public class Fo
存在型はheterogeneousリストなどの例がわかりやすいですけど、Rank2Types (or RankNTypes) はなかなかわかりやすい例がない気がしますー。 今回、存在型とRank2Typesを使って、いい感じなコード例を作ったので報告いたします :) What is Rank2Types ? どのようなものであるかは、こちらで示されています haskell.org - Rank-2 Types 仮定する知識 存在型 (ExistentialQuantification) ここでわかる -> Haskell/存在量化された型 - Wikibooks IsString (OverloadedStrings) 文字列リテラルをText型やByteString型として (IsString a => a型として) 扱えるようになるやつ 具体的にはs = "ahoge" :: IsSt
今までの印象 型からして明らかに常に右を取る do式ののりづけ関数 今回気づいたこと 値の世界について言及されていないから、左の値を取ることがある m >> n = nといった法則は要求されてない 事の発端 事の発端はMonadThrowの(>>)の要請するこの法則を見た時に気づきを得た。
Haskellの例外、今はコレ! Control.Monad.Catchモジュール ドーモ、最近Haskellを拠り所の一つとして生きているあいやです。 Twitterで「ソースをいかにHaskellらしく書くか?」ということを質問して、例外型についての知見が得られたので記事書きます。 更なる知見もまだまだもっと募集中。 追記 exceptionsパッケージよりもスレッドセーフである(らしい)、safe-exceptionsパッケージがリリースされています。 (Please see 続・Haskellの最近の例外ハンドリング - syocy’s diary) 非同期例外を用いる場合はこちらを使ったほうが良いようです。 exceptionsのControl.Monad.Catchモジュールが safe-exceptionsのControl.Exception.Safeモジュールに対応しており
この記事はVim advent calendar 2015の23日目の記事です! 昨日の記事は プログラミング初心者が某氏が提言していた「 Vim駆動学習 」をやってみた でした! 某氏、一体 何ぶささんなんだ…。 そこでrepl.vim! はい! 今貴方は小物のプログラムを書いています! はい、今classを書きました!! (コードの内容を理解する必要はありません) class Kawaii def initialize @messageList = [ 'おはよう、よく眠れましたか?', '朝ごはん、もうできてますよ! ずんだもち。', "モナド? 単なる自己関手の圏におけるモノイド対象だよ。\n何か問題でも?", 'むちむちじゃありません! もちもちです!', "皆のハート打ち抜くぞ〜\nずんだアローシュート!", "お口開けてください、あーん♡\nたこ焼き味のずんだもちです!" ]
このページを最初にブックマークしてみませんか?
『@aiya000のマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く