haskell-jp / random #42

構わないですが、どういう立て付けにしましょう?
まだHaskell-jpがなかった頃のお話ですし。
このWikiの古いロゴとして使われていた、とかですかね?
そうですね。ソースコードを改変するわけではないですね。自分の場合TypeApplicationsがあるときにパースエラーになるhlint のバグを踏んでハマりました。
質問の回答でなくて申し訳ないですが、このロゴかっこいいですね。
@ has joined the channel
スタートHaskell第0回の時のためにトラビスさんが作ってくれた思い出があります。
@ulfhorst has joined the channel
この2つの型クラスって表現できるものが似てるなーと感じてる。何が決定的に違うんですかね。
class FD a b | a -> b
class TF a where
  type T a

https://wandbox.org/permlink/hlCk0uyguUJpfGnM
たいていの場合(少なくとも型クラスに紐付いたものは)TypeFamiliesはFunctionalDependenciesで代用できるはずなので、その直感は間違ってないかと。
もともと(ghc6のころまで?) function dep. しかなかったところに、よりストレートな解法として type family が実装された、という流れなのかな、と理解しています
似たような事考えて違いを調べた事があったと思うんですが、すっきりしなかった記憶があります。
個人的には、最初Type familiesでやってても、FunDepの方が推論しやすくて結局FunDepになってしまうパターンが多い感じです
Swiftがextensionsあたりでの型引数を導入してない理由として、associated type families(相当のSwiftの機能)で代用できるから、という
……のがあった気がする(気がする)
あとそういえば、推論については最近入ったInjectiveTypeFamiliesでだいぶ改善されているらしいので、試したい https://qiita.com/lotz/items/6c038698c8f04f57113a
injective type families でできなくて func deps でできる例を幾つか知っていますが,確か型検査は func deps より type families の方が相当速いため,最近は assoc type families の方を使う動きがあると聞きました (func deps は multi param クラスになってしまうのに対し, assoc type family を使ったクラスは single param で済むことも多いので)
(なんかそこらへんをまとめた記事を読んだ気がするんですが,思い出せない…)
とりあえず https://wiki.haskell.org/Functional_dependencies_vs._type_families が結構まとまってますね.<@U570660KX> さんと同じで,僕も type families をなるべく使おうとしてますが, assoc type families はインスタンスに複雑な制約を付けようとするとうまく解決できない場合があって func deps に流れちゃうことも多いですね
Extensible攻略wikiがエラー吐いとる…… https://wiki.hask.moe/
GHCだと,変数識別子に日本語文字が使えたりするので,
「小文字」ではじまる名前を勝手に,「大文字」ではない文字で始まる名前と脳内変換して,
すっかりそのつもりだったのですが,hlintとかではparseエラーになる.
Iden.hs:5:1: Error: Parse error
Found:
    import Data.Char
    
  > あ :: Char
    あ = 'あ'
  

1 hint

「なんだよhlint,プンプン」と思ってたんだけど,Haskell 2010を見直すと,
varid	→	(small {small | large | digit | ' })⟨reservedid⟩

となっている.small は unicode lowercase letter,large は uppercase letter or titlecase letterとあるので,
hlintは正しい.申し訳けございません.hlint様:sweat:
@fumievalさーん!エラーメッセージからして、間違えてlocalhostにHTTPリクエストを送っちゃってるっぽいんですが、なんかミスった?
apusが落ちてました…今起動しました。
同じマシンでリバースプロキシとapusの両方が走っているのでlocalhostにリクエストを送っているのは意図的です
ご迷惑おかけしました!
@ has joined the channel
GHCのGitLabマイグレーションに関して、どなたか、以下の操作を確認テストできる方、いますか?
(Benさんが、ログインできるユーザーには、Wikiページを編集可能にしようと設定中です。)

確認方法は以下の通りです。

以下のページにアクセスします。
(GitLabのアカウントでログインしてください。GitHubのアカウントでの認証も可能です。)
https://gitlab.haskell.org/ghc/ghc/wikis/home

その上で、"Page history"の右側に、"Edit"ボタンが表示されるかを確認して欲しいのです。
(これまでは、ログインしても"Edit"ボタンが表示されなかったのです。)

もし試せた方(1人おられれば充分です)は、すみませんが、GitLabかGitHubのアカウント名込みで教えてください。
必須ではないので、対応できる方がおられましたらお願いします。
Editボタン、出ませんね...
アカウント名はいつもどおり igrep です。
素早い対応ありがとうございます!
ついでに、"Page history"のボタンも押して見てもらえますか?
履歴が表示されるか、表示されずに"403"の画面になってしますかを。
403ですね。。。 :disappointed:
確認ありがとうございます!
Benさんにissueで伝えます。 igrepさんにもmention流れるようにしておきます:pray:
@ has joined the channel
@yki0311 has joined the channel
おそらくですが、Developer権限でないと変更できなくて、(少なくとも現状は)無為に増やしたくはないのではないのでしょうか?
(Benさんが、ログインできるユーザーには、Wikiページを編集可能にしようと設定中です。)

とのことなので増やしたくないと言うことはないのでは...
@ has joined the channel
@sarashino has joined the channel
@efjay has joined the channel
情報不足でした。 Benさんが、wikiの編集権限を緩めようとされています。(ログインしていれば編集可能に。)
月曜日には、GitLabにそのためのパッチをあてるそうです。
https://mail.haskell.org/pipermail/ghc-devs/2019-March/017299.html
めっちゃ速いAho-Corasick法(文字列探索アルゴリズム)の実装を作った話(大分無理してる感ある
https://tech.channable.com/posts/2019-03-13-how-we-made-haskell-search-strings-as-fast-as-rust.html
404になったな
Page History
@ has joined the channel
そうこれ、Python以外比較されたコードを一切書いてないのはまずいですよね。そもそもPythonmもこのコードで実験したのか不明ですが。
もしよければ, GHC 8.6.3 / GHC 8.6.4 で以下のプロジェクトのビルドが通るか試していただけると嬉しいです
https://github.com/mizunashi-mana/maybreak-derivingvia
GHC 8.6.3 (MacOS 10.13.6) ではビルドが通りませんでした。
Build profile: -w ghc-8.6.3 -O1
src/TestSpace/PolyKinds.hs:11:47: error:
    • Expected kind ‘* -> *’, but ‘m’ has kind ‘k -> *’
    • In the first argument of ‘Functor’, namely ‘m’
      In the stand-alone deriving instance for
        ‘Functor m => Functor (T m)’
   |
11 | deriving via (ReaderT Int m) instance Functor m => Functor (T m)
   |
@syocy なるほど,ありがとうございます.ついでに, cabal new-freeze を実行してからもう一度試してもらえると嬉しいです
cabal new-freeze を実行してからリトライしましたが同じエラーメッセージで失敗しました。
cabal.project.freeze
constraints: any.base ==4.12.0.0,
             any.ghc-prim ==0.5.3,
             any.integer-gmp ==1.0.2.0,
             any.rts ==1.0,
             any.transformers ==0.5.5.0
@syocy まじですか… ありがとうございます
あ、すみません。README読まないでやっていました。READMEの2つ方法で再度試しましたがどのパターンでもエラーになりました。
@ いろいろやっていたら結果が変わりました。完全版です(fishシェル)↓
> rm cabal.project.freeze ; and ghcup set 8.6.3 ; and rm -rf dist* ; and cabal new-build ; ghcup set 8.6.4 ; and rm -rf dist* ; and cabal new-build
  -> 8.6.3 Error
  -> 8.6.4 OK
> cabal new-freeze ; and ghcup set 8.6.3 ; and rm -rf dist* ; and cabal new-build ; ghcup set 8.6.4 ; and rm -rf dist* ; and cabal new-build
  -> 8.6.3 OK
  -> 8.6.4 OK
論点がずれるようで申し訳ないが、PolyKinds.hs のderivingを無くしてghciでソースを読んだ後にderivingをghciのプロンプトで書くと通りました。(GHC 8.6.3)

嘘言いました mに種注釈付けてました ソース改変すいません。
わざわざありがとうございます.freeze する際に, transformers のバージョンによってどっちもエラーになったり,OKになったりする感じがしますね.これは, cabal と GHC ,どっちに報告すればいいんだろう…
さいきん quora にあの毛の壁な人が出現してるようですね… だいぶマトモそうな感じではあるんですけどあいかわらず細かいところであやしげな感じがします
https://jp.quora.com/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%A7%E8%A8%80%E3%81%86-%E5%89%AF%E4%BD%9C%E7%94%A8-%E3%81%A8%E3%81%AF%E4%BD%95%E3%81%A7%E3%81%99%E3%81%8B-%E5%89%AF%E4%BD%9C%E7%94%A8%E3%81%8C/answers/126433034
transformers のバージョンですか。 ちょっと(Control.Monad.Trans.Readerの)ソース見てみたのですが、0.5.5.0から0.5.6.0 の変化でPolyKinds拡張が消えているのですがこれが影響しているってことはないですかね?
なるほど,それかもですね. GHC 8.6.3 だと resolver が 0.5.5.0 だと判断しますが, GHC 8.6.4 だと resolver が 0.5.6.0 と判断する結果,このような動作になるんですね.freeze する場合はそのような変動が起きないので,バージョンによる違いが起きない感じっぽいですね.

なるほど,解決しました.ありがとうございます