gksato
ghc-bignum ってデフォルトが native になってますけど, これを gmp にしようと思ったら ghcup でGHCをインストールする時点でなんとかしないといけないですか…?ghc-bignum ってデフォルトが native になってますけど, これを gmp にしようと思ったら ghcup でGHCをインストールする時点でなんとかしないといけないですか…?がんばりました。直接installしていない物も含む、全transitive dependencyのライセンスのリスト:この件で,あるパッケージ群の全transitive dependenciesからlicenseを取ってくる作業をしたのですが,私の知識の範囲でできる限り車輪の再開発を避けて:
.cabal ファイルをもらってくる,Cabal-syntax パッケージを使ってその .cabal ファイルをパースしてライセンス情報を取るcabal install --lib して ghc-pkg list でインストールされている全パッケージのリストを取ってきたのです.しかし,これでは余計なパッケージまで見ている気がしますし,もうちょっとなんとかならんのか,という気がします..cabal ファイルは目的とするパッケージ群をdependenciesに持つ library だけを持つようにし,project の cabal.project にはそれらのライブラリについて設定すべきフラグを持たせるようにすると, cabal freeze で cabal.project.freeze がなんかそれっぽいファイルになるのですが,これで合ってるのでしょうか…? cabal freeze が良い方法なのか,あるいは別の方法があればお教えいただければありがたいです.RIO.Utf8Builder の値を ロギング用途ではなく 標準出力に吐き出すには何を用いるのが良いのでしょうか?putStrLn 等で出力をしているのですが、他により良い方法があったりしますか?Data.ByteString.Builder.Builder を用いているようなのでByteStringの方が良いのかな?とも考えて悩んでいます。strict-wrapper のコード (strict と unstrict 関数が怖いことをしていると思うので,皆様のご意見を伺いたいです.参照先のコードは大体data SPair a b = SPair !a !b strict :: (a, b) -> SPair a b strict x = case x of (!_, !_) -> unsafeCoerce x unstrict :: SPair a b -> (a, b) unstrict = unsafeCoerce
SPair a b と (a, b) の runtime representation が完全に一致しているということを主張している気がするんですが,そんな保証ってありましたっけ…?Downloading template new-template to create project hoge in directory hoge/...
Error: [S-1688]
Stack failed to download the template new-template from
.
While downloading, Stack encountered an HTTP error. Stack made the request:
Request {
host = ""
port = 443
secure = True
requestHeaders = [("User-Agent","The Haskell Stack")]
path = "/repos/commercialhaskell/stack-templates/contents/new-template.hsfiles"
queryString = ""
method = "GET"
proxy = Nothing
rawBody = False
redirectCount = 10
responseTimeout = ResponseTimeoutDefault
requestVersion = HTTP/1.1
proxySecureMode = ProxySecureWithConnect
}
and the content of the error was:
ConnectionTimeout cabal v2-install を実行すると GHC のコンパイル時警告が握り潰されるのですが,原因特定・解決のためには何をすると良いでしょうか? cabal v2-build を使うとコンパイル時警告が握り潰されないこと, このPC上,Docker container上の Ubuntu で同様の環境を作成したときにも同様の事象が発生することは確認しているのですが,どうも同様の環境を再現しているはずの AtCoder 実行環境では GHCのコンパイル警告は正しく表示される (type Term a = a -> Type type family Eval (e :: Term a) :: a data Fst :: (a, b) -> Term a data Snd :: (a, b) -> Term b type instance Eval (Fst '(a, b)) = a type instance Eval (Snd '(a, b)) = b
data MyNat = MyZero | MySucc MyNat deriving (Show, Eq)
mydivmod x y =
case x of
MyZero -> (MyZero, MyZero)
MySucc x' ->
let (d, m) = mydivmod x' y
in if (MySucc m) == y
then (MySucc d, MyZero)
else (d, MySucc m)data Nat
= Z
| S Nat
type family (m :: Nat) + (n :: Nat) :: Nat where
Z + n = n
S m + n = S (m + n)
type family (m :: Nat) - (n :: Nat) :: Nat where
Z - n = Z
m - Z = m
S m - S n = m - n
type family Cmp (m :: Nat) (n :: Nat) :: Ordering where
Cmp Z Z = EQ
Cmp Z (S n) = LT
Cmp (S m) Z = GT
Cmp (S m) (S n) = Cmp m n
type family DivMod (m :: Nat) (n :: Nat) :: (Nat, Nat) where
DivMod m n = DivModIter Z (Cmp m n) m n
type family DivModIter (d :: Nat) (o :: Ordering) (m :: Nat) (n :: Nat) :: (Nat, Nat) where
DivModIter d o Z (S b) = '(d , Z)
DivModIter d 'EQ (S a) (S b) = '(S d, Z)
DivModIter d 'LT (S a) (S b) = '(d, S a)
DivModIter d 'GT (S a) (S b) = DivModIter (S d) (Cmp (a - b) (S b)) (a - b) (S b)
type N2 = S (S Z)
type N5 = N2 + S N2>>> :kind! DivMod N5 N2
DivMod N5 N2 :: (Nat, Nat)
= '( 'S ('S 'Z), 'S 'Z)tokenize :: Parsec String () [Token] syntaxAnalyze :: Parsec [Token] () SyntaxTree