タグ

ブックマーク / bleis-tift.hatenablog.com (8)

  • 多値について本気で考えてみた - ぐるぐる~

    先日のエントリの反応として、多値の批判をしているように受け取られた方がいました。 実際には、多値の批判をしているのではなく、Go言語の「多値とそう見えるけど違うものがある」という仕様を批判したものでした。 また、タプルにこだわっているという受け取り方をした方もいました。 このエントリでは、「タプルにこだわっているのではない、多値にこだわっているのだ」ということを説明しようと思います。 このエントリで出てくるコードは言及がない限り妄想上のもので、実際の言語のコードではありません。 長いから3行で。 スタックマシンと多値は仲良し。継続と多値も仲良し。 多値は多値、タプルはタプル、みんなちがってみんないい。 多値とは、カンマで区切られた単なる複数の値だよ。妄想だけどね。 これで満足して仕事に戻っていただいて構いません。以下オマケ。 多値とタプルの違い まず、多値とタプルの意味的な違いについてをは

    多値について本気で考えてみた - ぐるぐる~
    zetta1985
    zetta1985 2018/11/12
  • Go言語のイケてない部分 - ぐるぐる~

    最近色々あって仕事Go言語を使っています。 色々割り切っている言語なので、こんなこと言ってもしゃーないんですが、言語設計はミスってるんじゃなかなぁ、と思わざるを得ない点が多々あります。 使い始めて1か月くらいなので間違ったことを書いているかもしれませんので、何かあれば指摘していただけるとありがたいです。 文ではネガばかり羅列していますが、ランタイムとツール周りは気に入っています。 Goのランタイムを使う、もっと洗練されたAlt Go的なものがあるといいのに(もしくはジェネリクスのったGo2を早くリリースしてほしい)、と思う日々です。 追記: なんか意図とは違った受け取られ方をしている方もいるので追記します。 この記事はあくまで、「Go言語を学ぶにあたって躓いた点」を列挙し、まとめ、理由を考えてみる(教えてもらう)ために書いたものです。 Go言語自体はDisってますが、Go言語ユーザーを

    Go言語のイケてない部分 - ぐるぐる~
    zetta1985
    zetta1985 2018/11/08
  • Git と GitHub を体験しながら身につける勉強会行ってきた - 予定は未定Blog版

    9/18(土) 15:30~ GitGitHubを体験しながら身につける勉強会(名古屋) : ATND 行ってきました。 なんかいろいろと話すことになったんですけど、あの場で言いそびれたこととか、もっとこう説明してればよかったなぁ、って部分の補足も兼ねたエントリです。 長文注意。 ショートカット git add の話 git add -p/git reset -p の話 リビジョン番号がない話 ブランチの話 git-completion の話、__git_ps1 の話 コミットの指定の話 reset の話 rebase と merge の話 公開したものの rebase の話 stash の話 TortoiseGit、HG、SVNのはなし 全体を通して git add の話 Git と SVN では、add に限らず、同じ名前のサブコマンドでも意味が異なるものがいくつかあります。 その中

    Git と GitHub を体験しながら身につける勉強会行ってきた - 予定は未定Blog版
    zetta1985
    zetta1985 2018/09/04
  • FParsecでJSONパーサーを書いてみる話 - ぐるぐる~

    F# Advent Calendar 2017の4日目の記事です。 NGK2017B昼の部でパーサーコンビネーターについてLTしてきたので、その内容について書きます。 ただし、内容は大幅に加筆修正しています。 PCさえあればいい。 from bleis tift 導入 世の中にはパースすべきものであふれています。 例えば、下記のようなものがあります。 ログ 設定ファイル ミニ言語(DSL) プログラミング言語 構造を持ったものはそこら中にあります。 これらを処理するためにどうすればいいでしょうか。 一つの方法として、正規表現を使うというものがあります。 しかし、(来の)正規表現ではネストする文法などは扱えません。 拡張機能として、ネストする文法が扱えるようになっているような処理系もあります。 しかし、そもそもそんな複雑な正規表現には近寄りたくないですよね。 では、文字列操作関数を駆使して

    FParsecでJSONパーサーを書いてみる話 - ぐるぐる~
    zetta1985
    zetta1985 2017/12/05
  • Log4Net のラッパーをつくる - ぐるぐる~

    備忘録の意味も込めて。 やりたいことは、 Debug 系メソッドはリリースモードでは呼出しごと削除したい いちいち LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType); って書くのだるいから省略したい の 2 つ。 Debug 系のメソッドをリリースモードで呼出しごと削除する これは、ConditionalAttribute を使えば出来そうだと軽く考えていたんだけど、この属性、インターフェイスやら抽象メソッドやらには指定できないらしい・・・ まぁ、当たり前っちゃぁ当たり前なんだけど・・・ で、partial メソッドもなんかそれっぽいことに使えそう・・・と、思ったんだけど、こっちも制限が厳しすぎて実現不可能・・・ これも当たり前なんだけどね・・・ で、結局、ObsoluteAttribute と pragma

    Log4Net のラッパーをつくる - ぐるぐる~
  • Java やってる人が C# を使うとはまること - ぐるぐる~

    ここでは、Java SE 5.0 以降を知っている人が C# 2.0 を使うことになった場合を考える*1 *2。 あと、ライブラリについては触れないことにする*3。 命名規約 まず、命名規約が全然違う。Java ではメソッド名にキャメル形式*4を使うけど、C# では Pascal 形式*5を使い、Java では定数名に大文字アンダーバー区切り*6を使うけど、C# では Pascal 形式を使う。 C# に関する命名規約としては、ここだとかここだとかにあるので、参考にするといい。 間違っても、オブジェクト倶楽部のは参考にしないこと*7。 struct の扱い Java ではユーザ定義型は全て参照型だけど、C# では値型も作成できる。また、標準ライブラリの中に struct で定義されたものもある。 で、何にはまるかというと、struct は class と違い、「値渡し」される*8、つまりコ

    Java やってる人が C# を使うとはまること - ぐるぐる~
    zetta1985
    zetta1985 2017/07/12
  • LangExtでのOptionの設計 - ぐるぐる~

    このエントリの最新版はGithubにあります。 Optionの意味を理解していることを前提に、直和型をC#で実現する方法についてを説明し、 LangExtではどういう方針を採用しているのかと、その理由について明らかにします。 バリアント型のC#での設計方針 Optionなどのバリアント型(VBのVariant型のことではありません)をC#で実現する場合、大まかに次の2つの方針があります。 型の階層で表現する タグを判別する値を持つようにする 一つ目の方法は、Option(もしくはMaybe)型の実現方法としてよく使われている方法です。 +-----------+ | Option[T] | +-----------+ △ | +-----+-----+ | | +---------+ +---------+ | Some[T] | | None[T] | +---------+ +----

    LangExtでのOptionの設計 - ぐるぐる~
    zetta1985
    zetta1985 2013/05/30
    match式の模倣、参考になる。option.dartに取り込めるかな・・・
  • 例外について色々と考えてみた - ぐるぐる~

    オブジェクト倶楽部、コーディング規約の会の「C# コーディング標準」の駄目なところ - ぐるぐる〜から派生して、 「他の例外クラスを継承しただけの例外クラスを作らない」に不同意の理由 - Diary of Dary、 例外クラスの指針 - とC#について書くmatarilloの雑記や、さらには TwitterJava の検査例外と非検査例外についての議論へと発展したので例外についてまじめに考えてみた。 あくまで、今の自分の考えなので真に受けない方がいいかも!そもそも経験が少ないので、トンチンカンなことを言ってるかもしれません。 あ、それと、用語は基的に Java から取ってきています。ただ、メソッドじゃなくて関数を使っているけど、これに深い意味はありません。多分。 例外とは まず、例外とは一体何者なのか、ということ。 ここでは面倒を避けるために、Meyer 先生の定義を借りること

    例外について色々と考えてみた - ぐるぐる~
    zetta1985
    zetta1985 2010/01/21
    検査例外の代替手段として「関数」でエラーコード返すってのは納得いかないなぁ。それもう「関数」じゃなくない?んで、エラーコードの内容、公開するの?ライブラリ仕様変更→呼び出し元気付けない→バグ、な流れに
  • 1