haskell-jp / questions #33

了解です。ちょっと調べてみます。ありがとうございます!
それはそれとして,コレって (++)happend の中置演算子としての左右結合性が異なることから来てるから, extensible のほうで揃える修正もしたほうが便利な気がするけど,どう思いますか?
@fumieval
修正しました!さっきextensible-0.5をリリースしてしまったのが悔やまれる… https://github.com/fumieval/extensible/commit/ae5c1e07269cf80cfd55dca95b567c61707ef66d
あ、そうですね。上記のソースのビルド通すだけならそれでいけますね :sweat_smile:
こういう場合、ちゃんとした証明を実装しておいて、
unsafeCoerce `asTypeOf` proof
のように定義するというテクニックもあります
ああ, (++)singletons のものじゃなくて, extensible 内で独自に定義してるのか.
話は逸れますが、要素の型レベルリストは固定してラッパーを変えるのがextensibleの流儀なので、happendは実は非推奨だったりします
:thinking_face: どういう意味でしょうか?
happend を使わずに結合する方法があるんですか?
結合すること自体、あまり推奨はしていないです
こういう関数ってありませんでしたっけ。。ものすごく曖昧な記憶だけどあった気がするんです。

(<**>) :: (a -> b) -> [[a]] -> [[b]]
(<**>) = map . map
-- こんなのなかったっけ・・
Control.Applicativeにある同名の演算子は全然違いますからねぇ

(<**>) :: Applicative f => f a -> f (a -> b) -> f b
いや、完全に記憶違いだったかもしれないです。前に会社でこんな話してたなーっていうのをなんとなく覚えてただけなのかも。
そのときの結論を思い出せないのが悔しい
こういうのって どうにかならないんですかね? 演算子を定義できるってのはhaskellの強みだとは思うのですが、同じ演算子を別の意味で定義されると混乱するというか、、、別にライブラリをまたいで無いので問題ないのはわかるんですけど、、、
自分がライブラリの開発してたら、まず著名なライブラリの演算子と被らないようにして、それでもどうしようもなかったらqualifiedでimportしてください。。!っていうかなー

import qualified MyLib as M

M.<**>
演算子じゃないバージョン(普通の関数)も提供する
@snak has joined the channel
stackでpackageをimportする所でつまづいています。

stackのUser guideを見ながらAdding dependenciesの項目のように
以下のようなコンパイルエラーが出ています。

/Users/you/Downloads/tanaoroshi/app/Main.hs:three:1: error:
Could not find module ‘Data.List.Split’
Use -v to see a list of the files searched for.
|
3 | import Data.List.Split
| ^^^^^^^^^^^^^^^^^^^^^^

User guideのようにpackage.yamlに以下の記載を追加してstack buildしてみましたが上記のエラーが改善しません。

dependencies:
- base
= 4.7 && < 5
- split

指定の仕方に問題があるのかとも思い、以下も試してみましたがダメでした。

dependencies:
- base
= 4.7 && < 5
- Data.List.Split

どのようにすればパッケージを利用できるのでしょうか?
https://gist.github.com/applePrincess/ff93cbee587beec9f7c00783c5292dea な感じで出来ましたよ? templateはsimple-hpack で resolver はlts-13.0を使いました。URL以外は変更をしてませんが。stack buildは通りましたよ。
dependencies:
- base >= 4.7 && < 5
- split


package.yaml でこう書くのが正しいやり方です。正しいはずなのにどうしてエラーになるのかはわからないのですが、 stack build をして出てきた文字を全部書いてもらえたら役に立つと思います。
- .cabal ファイルが何らかの理由で書き換えられたことになっている場合の警告が出ていないか(具体的なメッセージは忘れてしまいましたが)、
- 実は間違えてpackage.yamlを /Users/you/Downloads/tanaoroshi 以外の場所に置いていないか

の2点が気になりますね。
@aayhrot has joined the channel
lts-13で結構なパッケージがstackageからdropされてるようなんですが,
ビルドできなくなったときとかauthorに連絡いかないんでしたっけ?
少なくともGitHubでIssueが立てられるはずです。
それでも反応がないときにメールが飛ぶのではないかと思います。
そのパッケージのgithub?lts-haskellのgithub?
うーん. Agda とか messagepack とかissue無い気がするけど
普通は、あと数Minor Versionたったら戻るみたい
igrepさんの指摘のように.cabalを手書きで修正しているというWarningが出ていました。エラーをよく読むとpackage.yamlを使いたいならcabalファイルを消すことって書いてました。
Worning: /Users/you/Downloads/tanaoroshi/tanoroshi.cabal was modified manually. Ignoring /Users/you/tanaoroshi/package.yaml in favor of the cabal file. If you want to use the package.yaml file instead of the cabal file, then please delete the cabal file.

それ以外にも分からないまま色々なファイルを書き換えては戻したりしてしまったので、別のディレクトリでstack newからやり直してstackの環境をフレッシュにつくり直してやり直してみました。
それまでに書いたソースをコピーし、package.yamlにsplitの記載だけ追加してstack buildしたら問題なくコンパイルできました。

ありがとうございます。エラーメッセージをもっとちゃんと読まないとダメですね。
掻き乱す意図はないのですが、 package.yamlのタイムスタンプが cabalファイルのタイムスタンプより新しいと勝手に最新のcabalが上書きされたような?
メールはこないかな、すっごい有名なやつならわからないけど
あと、多分 Issue のでき方を勘違いしてるかな?
Glob の Issue の見方は:
- Glob のバージョンが上がりました
- しかし、pandoc-2.5 がブロックして上げれない
- 対応しないとドロップされるぞ(pandoc-2.5が)
という感じなので Agda に警告言ってる Issue があるかどうかの問題ですね。
lts のマイナーバージョン (e.g. lts-12.x) が上がってるうちは drop されることはないんですけど、メジャーバーションが上がるときは一気に drop されます(nightly に入ってたやつがそのまま取り込まれる)
package.yamlのタイムスタンプを.cabalよりも新しい状態にしてstack buildしてみました。
(勘違いして.cabalのタイムスタンプを新しくしようとしたので.cabalも近い時間に更新されてます。)

iMac27:tanaoroshi you$ stack build
tanaoroshi-0.1.0.0: unregistering (local file changes: package.yaml)
tanaoroshi-0.1.0.0: configure (lib + exe)
Configuring tanaoroshi-0.1.0.0...
tanaoroshi-0.1.0.0: build (lib + exe)
Preprocessing library for tanaoroshi-0.1.0.0..
Building library for tanaoroshi-0.1.0.0..
Preprocessing executable 'tanaoroshi' for tanaoroshi-0.1.0.0..
Building executable 'tanaoroshi' for tanaoroshi-0.1.0.0..
tanaoroshi-0.1.0.0: copy/register
Installing library in /Users/you/haskell/tanaoroshi/.stack-work/install/x86_64-osx/lts-13.0/8.6.3/lib/x86_64-osx-ghc-8.6.3/tanaoroshi-0.1.0.0-5xeICrctrISDA8KRnU1BAz
Installing executable tanaoroshi in /Users/you/haskell/tanaoroshi/.stack-work/install/x86_64-osx/lts-13.0/8.6.3/bin
Registering library for tanaoroshi-0.1.0.0..
iMac27:tanaoroshi you$ ls -l
total 64
[email protected] 1 you  staff  1261 12 23 07:51 20181220Stock.csv
-rw-r--r--  1 you  staff    50 12 25 16:33 ChangeLog.md
-rw-r--r--  1 you  staff  1523 12 25 16:33 LICENSE
-rw-r--r--  1 you  staff   171 12 25 17:23 README.md
-rw-r--r--  1 you  staff    46 12 25 16:33 Setup.hs
drwxr-xr-x  3 you  staff    96 12 25 17:50 app
-rw-r--r--  1 you  staff  1190 12 26 06:57 package.yaml
drwxr-xr-x  3 you  staff    96 12 25 16:33 src
-rw-r--r--  1 you  staff  2133 12 25 16:33 stack.yaml
-rw-r--r--  1 you  staff  1546 12 26 06:56 tanaoroshi.cabal
drwxr-xr-x  3 you  staff    96 12 25 16:33 test


.cabalのタイムスタンプはpackage.yamlよりも1分古いままでしたので今回の検証では上書きされませんでした。ご報告まで

https://github.com/keera-studios/haskell-titan/tree/master
のサイトで
installしようとしているのですが、
その道中でSDL-0.6.7.0のインストールができなくて困っています
どんな状態でエラーが出来ていないんでしょうか?
エラーメッセージが出て終了しましたか?
それともビルドが途中でフリーズしてしまっている、とかでしょうか?

また、使用しているGHCのバージョンやOSなどのご利用の環境についても教えてください。
[email protected]:~/haskell-titan$ cabal install -fexamples titan-yampa-debugger/
Resolving dependencies...
Notice: installing into a sandbox located at
/home/sawada/haskell-titan/.cabal-sandbox
Configuring SDL-0.6.7.0...
Failed to install SDL-0.6.7.0
Build log ( /home/sawada/haskell-titan/.cabal-sandbox/logs/SDL-0.6.7.0.log ):
cabal: Entering directory '/tmp/cabal-tmp-11367/SDL-0.6.7.0'
[1 of 1] Compiling Main ( /tmp/cabal-tmp-11367/SDL-0.6.7.0/dist/dist-sandbox-eed7c60d/setup/setup.hs, /tmp/cabal-tmp-11367/SDL-0.6.7.0/dist/dist-sandbox-eed7c60d/setup/Main.o )
Linking /tmp/cabal-tmp-11367/SDL-0.6.7.0/dist/dist-sandbox-eed7c60d/setup/setup ...Configuring SDL-0.6.7.0...
configure: WARNING: unrecognized options: --with-compiler
checking for sdl-config... no
checking for sdl11-config... no
configure: error: *** SDL not found! Get SDL from .
If you already installed it, check it's in the path. If problem remains,
please send a mail to the address that appears in ./configure --version
indicating your platform, the version of configure script and the problem.
cabal: Leaving directory '/tmp/cabal-tmp-11367/SDL-0.6.7.0'
cabal: Error: some packages failed to install:
SDL-0.6.7.0 failed during the configure step. The exception was:
ExitFailure 1
SDL-gfx-0.7.0.0 depends on SDL-0.6.7.0 which failed to install.
titan-yampa-debugger-0.1.0.0 depends on SDL-0.6.7.0 which failed to install.
windows10内のubuntsuで行っています
SDLを見つけられていないようです。 `stack` や `ghc` は勝手にやってくれないので、自分でインストールする必要があります。
もしすでにインストールされているようであれば、PATHなどを確認する必要があります。
なお、WSL上でSDKが動いてくれるのかは、私はわかっていません。
> checking for sdl-config... no
> checking for sdl11-config... no
> configure: error: *** SDL not found! Get SDL from .
> If you already installed it, check it’s in the path.
@mo.murakami has joined the channel
こんばんは。
emacsで関数の型注釈をemacsのコマンド経由で挿入したくて右往左往してます。 (vimの頃はghc-modに頼ってた)
haskell-ide-engineとhaskell-modeでそれが可能なのか、ghc-modが必要なのかということもはっきりさせられていません。
もしghc-modだけしか型注釈の挿入ができないのであれば、ghc-modをインストールしたいと思います。
今OSXの10.14.2を利用しているんですが、どのltsがベストかを知りたいです。お助けください :bow:

~/src/github.com/shokohara/mergecleanhs(develop*) » cat ~/.emacs.d/init.el                                                                                                                                                                                                    [email protected]
(require 'cask "~/.cask/cask.el")
(cask-initialize)

(require 'lsp-mode)
(require 'lsp-ui)
(require 'lsp-haskell)
(require 'company)
(global-company-mode)

(autoload 'ghc-init "ghc" nil t)
(autoload 'ghc-debug "ghc" nil t)

(add-hook 'lsp-mode-hook 'lsp-ui-mode)
(add-hook 'haskell-mode-hook #'lsp)
(add-hook 'haskell-mode-hook 'flycheck-mode)

;; フックを設定
(add-hook 'haskell-mode-hook 'haskell-indentation-mode)
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(add-hook 'haskell-mode-hook 'haskell-decl-scan-mode)
(add-hook 'haskell-mode-hook 'haskell-doc-mode)
(add-hook 'haskell-mode-hook (lambda () (ghc-init)))

(eval-after-load 'haskell-mode '(progn
                                  (define-key haskell-mode-map (kbd "C-c C-n C-t") 'haskell-process-do-type)
                                  (define-key haskell-mode-map (kbd "C-c C-n C-i") 'haskell-process-do-info)
                                  (define-key interactive-haskell-mode-map (kbd "M-.") 'haskell-mode-goto-loc)
                                  (define-key interactive-haskell-mode-map (kbd "C-c C-t") 'haskell-mode-show-type-at)))
(setq lsp-haskell-process-path-hie "hie-wrapper")
(setq haskell-process-type 'stack-ghci)
(setq haskell-process-path-ghci "stack")
(setq haskell-process-args-ghci "ghci")
(add-hook 'haskell-mode-hook
          (lambda ()
            (set (make-local-variable 'company-backends)
                 (append '((company-capf company-dabbrev-code))
                         company-backends))))
(put 'downcase-region 'disabled nil)
stack を使う前提なら、intero 経由でやったほうが楽なんじゃ? ただし stackを使ってないプロジェクトには、、、どうなんだろ? って感じですけど
お返事ありがとうございます。導入してみます。そのHPを見たところ下のようにありましたので、8.0.1から順に試してみます。

Modern and backwards compatible
Tested on GHC 8.0.1, GHC 7.10.3, GHC 7.10.2, and GHC 7.8.4.
最新リリースのやつなら多分8.4系(lts-12.x) でも行けるはずですよ。 8.6系はうーん。lts出たばかりだし、しばし待たれよって感じみたいですね(?)
globalとprojectの両方をlts12.25にして emacs src/Main.hs してみたところtype signatureの挿入が完全に動いてます!!
ここまで簡単に動くとは。お導き頂いて本当にありがとうございました :bow:
(今までの苦労は何だったんだろう。。)
今でしたらghc-modの元メンテナ @kazu さんが作ったhhpもおすすめですよ! http://haskell.1045720.n5.nabble.com/Happy-Haskell-Programming-for-GHC-8-x-td5888460.html
お返事ありがとうございます。
- interoと共存できるのか
- 共存しないなら、stackを使う前提ならどっちが 良い? のか
などを調べてみます。(どうであれ、igrepさんにおすすめしていただいたので試してみます) :bow:
@sachiko.nitta has joined the channel