notogawa
:+1:
mingw32_HOST_OS が定義されていたら、 winsock2.h は存在すると仮定してもいいですか? (network パッケージ、過去の遺産が降り積もっていて、泣きそうです。)mingw32_HOST_OS と winsock2.h が存在するときに定義される HAVE_WINSOCK2_H です。mingw32_HOST_OS であっても,includeパスがおかしいとかでconfigure時に見えてないような事態も考えられるので winsock2.h のincludeでは HAVE_WINSOCK2_H も見るようにしたほうがいいです.どちらかに統一というか #ifdef mingw32_HOST_OS → #ifdef HAVE_WINSOCK2_H → #include <winsock2.h>のように包含関係になるような感じじゃないかとData.Array.Base を読み込むと UArray Int Bool に対して ByteArray# を取り出せるので、後はなんとかなりませんかね?ByteArray# について調べてる途中で UArray がByteArrayAccessのインスタンスになってることに気づいて convert を使えば思ってたことができそうです :bow: 詳しい実装もコードを読んで勉強してみます :pray: winsock2.h が見えないときは、どのみちエラーにすべきなので、`mingw32_HOST_OS` だけでよくないですかね?AC_CHECK_HEADERS の action-if-not-found ケースでエラーにすることもできます.main = readFile "file_list.txt" >>= mapM_ (readFile >=> print . length) . lines
length だと全部読んで(そして自動で閉めて)しまいそうですし、 take 1 とかしてみるのはいかがでしょうか?ulimit でファイルディスクリプタ数の限界( -n オプション)を小さく設定した上で, take 1 で実行してみてください.type A a = B a a という型関数において,型クラス C :: * -> * のインスタンスとして instance C A where という定義があった時に,最終的にインスタンスを決める時に (\a -> B a a) ~ A をどうやって判定するかという問題になります.このような問題は,一般に実際に全ての値に対して返り値が一致しているかという方法で判断しますが,これをチェックするのは通常難しいですね.(\a a -> B a a) ~ A をどうやって判定するかという問題になります」の部分がよく判からないでいます。type A2 a = B a a というのがあった時に, A2 ~ A なので C A2 という制約は instance C A から成り立つはずです.これをどう判定するかということですね\a a -> B a a / \a -> B a a / でしたforall a :: *. A2 a ~ A a が成り立つかどうか)が undecidable だということですね.この例の場合はdecidableにするアルゴリズムがあるかもしれません(なので,今回の場合はできるかもしれません)が,これを一般の場合で考えた場合(例えば,ブール論理を埋め込んだstack overflowの例の場合),それを判定する決定的なアルゴリズムを構築するのが困難だということです