haskell-jp / questions #97

前に質問させて頂いたように、このようなデータ構造を定義してしているのですが、
流石にフィールド名が長い(MWBTreeぐらいには省略しても良いかもしれない)ので、
makeFieldsでlensを適用したいのですが、
lensを使わなくても素直にアクセス出来るようにしたいので、
フィールド名をアンダースコアで始めたくありません。
古典的なプレフィクス付きのフィールド名を維持しながらlensのコードを生成する素直な方法はありますか?
... Replies ...
Pachiras Yokohama
@Pachiras Yokohama has joined the channel
前に質問させて頂いたように、このようなデータ構造を定義してしているのですが、
流石にフィールド名が長い(MWBTreeぐらいには省略しても良いかもしれない)ので、
makeFieldsでlensを適用したいのですが、
lensを使わなくても素直にアクセス出来るようにしたいので、
フィールド名をアンダースコアで始めたくありません。
古典的なプレフィクス付きのフィールド名を維持しながらlensのコードを生成する素直な方法はありますか?
... Replies ...
@Koki Sato has joined the channel
@ has joined the channel
exceptionsパッケージで`MonadCatch`クラスに`ContT` インスタンスが提供されていないのは何か理由があるのでしょうか?
具体的には実装として以下のものを考えられると思うのですがまずい部分があるのでしょうか?
instance MonadCatch m => MonadCatch (ContT r m) where
  catch m f = ContT $ \k -> catch (runContT m k) (flip runContT k . f)
... Replies ...
@TH has joined the channel
はじめまして。
Haskell 2010 Language Report および そのリポジトリ を読んでいるのですが、文書の内容に(些細な)問題を見つけたり、ビルドスクリプトに問題が見つかった場合は、どこに提案すればよいのでしょうか?
... Replies ...
お疲れ様です。
lensのライブラリがいくつかあります。(generic-lensはいいなと思いつつ)
どれも同じ定義をつかっているようですが、
パワフルな機能は必要なくてLens, Prism, Traversal, Isoとか基本的なものが含まれていればよいケースでは
どれを使うのがおすすめでしょうか。
そろそろbaseのライブラリに入ってほしいですね。
逆につかわないほうがいいものはありますか?
とりあえず、これを使うべきですかね。
https://hackage.haskell.org/package/lens
... Replies ...
@juxtapose has joined the channel
@Xosdy has joined the channel
@ddd has joined the channel
@ has joined the channel
@Kei has joined the channel
@T C has joined the channel
@kyoheiu has joined the channel
非標準ライブラリーを import すると VS Code がエラーと言う 例えば `Could not find module 'Data.Vector'\nPerhaps you meant Data.Functor (from base-4.14.1.0)`  実際はビルドも実行も問題がないコードですが VS Code の Extension に HSLに入れて以来この問題が発生しています 環境は VS Code + WSL2: Ubuntu-20.0.4 Remote + Extension: Haskell 1.4.0 (Haskell Language Server), stack version 2.5.1, ghc version 8.10.4 です どなたか解決策をお持ちですか
... Replies ...
@nseki has joined the channel
Windows 10 に stack をインストールして Haskellプログラミングの環境を作成しようとしたら、%USERPROFILE% にnon-ASCII文字があるとNG という地雷を踏んでしまいました。
ユーザー名に日本語が含まれていたためです。ユーザー名にnonASCII文字を含まないローカルアカウントを作成し、そちらのアカウントでやれば回避できるのですが、
日本語を含むユーザー名のままで、この問題を回避する方法はありますでしょうか。特殊な事情があり、WSLは使えません。
... Replies ...
random な気もしますが、とりあえずこちらで。

GHCのgitlabのページ()で、CodeやWikiに対するsearchが動いてないようです。元からこうでしたっけ?ちょっと前まではきちんと動いていたような記憶があります。そもそも手元の問題かも、と思ってiPhoneで試してみましたが、やはりsearchできないようです。
... Replies ...
@thanai has joined the channel
@hakamatao has joined the channel
@MegaClaypool has joined the channel
servantについて質問です。

Tutorialのfirst exampleのstartAppを1つの関数にまとめたらどうなるのかやってみようとして失敗しました。
Tutorialのプログラムの startAppUserAPI1 型に依存するはずですが、`myStartApp` にはこの型の変数を引数に取ることがないので、代わりに型変数 apiType を取るようにするためにforallを使ってみたのですが、
Illegal symbol forall in type
というエラーが出てうまくいきません。
どのように記述すればいいでしょうか?
... Replies ...
@yakami has joined the channel
@sanao has joined the channel
IntSet みたいな~trie木~Patricia木を車輪の再開発しなければならなくなったのですが、型の御加護を受けつつ余計なreference indirectionを避けるために

data Patricia (inhabited :: Bool) :: Type where
  Branch :: {-# UNPACK #-} !Word -> !(Patricia True) -> !(Patricia True) -> Patricia True
  Tip :: {-# UNPACK #-} !Word -> Patricia True
  Nil :: Patricia False

newtype Patricia' = forall b. Patricia' (Patricia b)

みたいなことを考えたのですが、existential type って newtypeでは使えないようで、効率が悪そうというよりはただただ気持ち悪いです。empty と non-emptyを型で分離した上で、それらを統合するwrapperがheap中にもう一個できるのを回避するのは不可能でしょうか…。
... Replies ...
empty と non-emptyを型で分離した上で、という話じゃなくなってしまうのですが。

GADT による制限で NilBranch にも Tip にも持たれないので、空の Patricia を表現するときだけに使われると思っていいですよね。もしそうなら、`Patricia` が必ず1つ以上の要素をもつ (`Semigroup` みたいに) としてしまえば Nil がなくなって inhabited を区別しなくてよくなり、existential type もいらなくなると思ったのですが、そういうのってありなんでしょうか。empty がなくなると不便ですかね。
... Replies ...
@matsu has joined the channel
takumi_matsuura
@takumi_matsuura has joined the channel
MacOS Big Sur on Intel Mac, GHCup v0.1.15.2 から `ghcup install hls latest` (1.2.0)が

```Digest error: expected "9863f00928f72cf0a16bd3f3578ac55704c721bc77148273d909fd895d05c783", but got "a310d8a3e9c5c4218210f750682c74a0f82ad0f59995adde0dbe775115b1e357"```
で~失敗する~ (Hiromi ISHII さんの ご回答通り、今はちゃんと通ります [update: 2021/06/17 02:13])のですが、似たような状態の方いらっしゃいます?
... Replies ...
Hiromi ISHII / mr_konn
ちょうど今、8.10.5 対応のバイナリを追加した版をGitHubにアップロードした所でして、ファイルのダイジェストがghcupの想定するものと変わっています。ghcupへの反映も近いうちに起きて正常にダウンロードできるようになる予定ですので、今しばらくお待ちいただければと :pray:
@en30 has joined the channel
@yuyawk has joined the channel
@Parker Liu has joined the channel
@gest N has joined the channel
@Elfi Automata has joined the channel
@LEG END has joined the channel
@fuji has joined the channel
どなたかservant-elmを使っている方はいらっしゃいますでしょうか?

servant-elmで生成したelmのエンコーダ、デコーダを使ってlocalhostでやりとりをしようとしていて困ったことがありました。

まず、servantで書いたサーバ側のURLが でelmで書いたクライアント側が なので、CORSが働いてうまく作用しないことがわかりました。(WebブラウザはSafariです)
そこで、サーバ側のHaskellコードでwai-corsライブラリを使ってCORSの設定としてSimpleCorsResoucePolicyを設定したところ、
GETメソッドは通るようになりましたが、なぜかPOSTメソッドが通らず、
Preflight response is not successful
XMLHttpRequest cannot load http://localhost:8080/xxx due to access control check
とエラーメッセージが表示されてどう対処していいのか分からない状態です。

一応、サーバにターミナルのcurlコマンドで直接アクセスするとPOSTメソッドもうまくいくので、サーバ内部で発生したエラーではなさそうです。
原因はおそらくCORS回りだと思うのですが、SimpleCorsResoucePolicyは"GET", "HEAD", "POST"メソッドを許容するような設定のはずなので、GETだけうまくいってPOSTがうまくいかない理由が分からないです。

何かアドバイスいただけないでしょうか?
... Replies ...
どこに投げたものかちょっと判断がつかなかったのでこちらでお聞きしたいんですが、Neovim 0.5.0に上げてからcoc.nvim経由のHLSが正常に動きません。(具体的にはポップアップウィンドウが正常に表示されない)この場合、
• Neovim
• coc.nvim
• hls
どこにイシューを投げるべきでしょうか。
ちなみにNeovim 0.4.4に戻すと正常に作動します。
... Replies ...
Yoshikuni Kato
@Yoshikuni Kato has joined the channel
@mk3 has joined the channel
@ has joined the channel
@ has joined the channel
@ has joined the channel
@ねこはち has joined the channel
pattern synonyms と view patterns を使ったときにパターンに失敗するというの明示できましたっけ?
... Replies ...
@Mayo Tsukuda has joined the channel
@unvalley has joined the channel