タグ

ブックマーク / faithandbrave.hateblo.jp (2)

  • C++のコンパイルエラー爆発を競うコンテスト - Faith and Brave - C++で遊ぼう

    Results of the Grand C++ Error Explosion Competition 少し前に、C++のコンパイルエラーの長さを競うコンテストが開催されていました。 受賞のカテゴリは2つあり、ひとつめは最小コードで最大のコンパイルエラーを出した人、もうひとつは芸術的な評価による受賞です。 最小コードで最大のコンパイルエラー この部門で優勝したのはEd Hanwayさんという方で、ソースコード量に対して59億倍のコンパイルエラーメッセージを出力したそうです。 それには、自身を2回インクルードするという手法が使われていたそうです。 #include ".//.//.//.//jeh.cpp" #include "jeh.cpp" 次点として、インクルードに後方参照を使用した、7億9千万倍のコンパイルエラーを出力するコード: #include "set>.cpp" #incl

    C++のコンパイルエラー爆発を競うコンテスト - Faith and Brave - C++で遊ぼう
    ebo-c
    ebo-c 2017/06/25
    "以下のコードは、素朴ではありますが、予期せずコンパイルエラーが爆発します。" グルメかアートに対しての描写だこれ
  • 必ず成功させるという設計選択 - Faith and Brave - C++で遊ぼう

    リストの先頭要素を取得するPreludeのhead関数は、空リストを与えると失敗します。 「1要素以上なら必ず成功する」という大半の状況でうまくいく処理のためにエラーハンドリングをするのはめんどくさいですし、エラーの可能性を残すというのは不安です。現状では必ず1要素以上のリストが渡されるけど、将来もしもここの箇所に0要素で来たら落ちるかもしれないからエラーハンドリングしておこう、という、現状では無駄なコードを書くことになるかもしれません。 この問題へのアプローチとして、「必ず1要素以上が入ることが保証されたリスト」を定義することで、エラーハンドリングすらさせない、というものが考えられます。 以下はHaskellで書いたものです。 type NeverEmptyList a = (a, [a]) front :: NeverEmptyList a -> a front xs = fst xs

    必ず成功させるという設計選択 - Faith and Brave - C++で遊ぼう
  • 1