我在OSX 10.6上,目前有平台2010.2.0.0.我应该只在顶部安装2011.2.0.1还是有更顺畅的更新机制?
我即将进入Haskell,我有点困惑,为什么我建议通过brew安装GHC和Haskell平台.
GHC不是Haskell实现/编译器吗?
什么时候需要平台?
我目前正在阅读http://hackage.haskell.org/packages/archive/containers/latest/doc/html/Data-Set.html#t:Set
下面的细节传达了什么(对绝对的haskell初学者)?
便携性:便携式(其他哪些是便携性值?)
稳定性:临时性(其他哪些是稳定性值?)
维护者:libraries@haskell.org
安全Haskell:安全(有什么东西不安全吗?)
我试图从MiranLipovača 的书" 了解你的哈斯克尔 "一书中学习Haskell.本书和haskell.org都建议安装Haskell平台,但我没有下载Manjaro Linux(基于Arch).
我从2014年开始找到这个指南,并决定从Manjaro的存储库安装这些软件包.这很好用,直到我想在Emacs中使用haskell-mode.我对此进行了故障排除,发现它是包的问题(主要是Stack).
寻找解决方法,我找到了这个Reddit线程,它描述了安装Haskell(不是平台)的方法,以及包的问题.我跟着一个评论,并结束了与脚本安装堆栈(GHC和)的描述在这里:
wget -qO- https://get.haskellstack.org/ | sh
stack setup
stack update
Run Code Online (Sandbox Code Playgroud)
我的问题与此有关:
$HOME/.stack/programs/x86_64-linux/ghc-tinfo6-nopie-8.2.2/lib/ghc-8.2.2其中许多似乎已经安装.有在短短的哈斯克尔平台单独(许多重叠的模块数泛型库syb,Data.Typeable,Data.Data,GHC.Generics),但我有一个非常基本的通用编程任务的麻烦.
我希望能够在相同形状的类型之间进行转换,即我想要在同构类型之间的多态,类型转换函数,本质上是本文末尾提供的(PDF),其中提到了索引类型族.
我并不关心废弃我的样板,而是能够围绕总和和产品抽象构建新的库.
下面的问题是GHC.Generic我认为最接近我需要的问题,但欢迎其他解决方案.
以下两种类型具有相同的形状
data Pair = Pair Char Int deriving (Generic, Show)
data Pair2 = Pair2 Char Int deriving (Generic, Show)
Run Code Online (Sandbox Code Playgroud)
我想使用GHC.Generics在它们之间转换值.由于所有幻像参数和其他废话,以下未能进行类型检查:
f :: Pair -> Pair2
f = to . from
Run Code Online (Sandbox Code Playgroud)
最终,我想要一个类似于fromInteger具有任何Generic(或任何其他类可支持此实例)实例的多态返回值的函数.我想我正在寻找类似的东西GHC.Generics:
--class:
type family NormalForm a
class ToGeneric a where
to :: a -> NormalForm a
class FromGeneric b where
from :: NormalForm b -> b
--examples:
data …Run Code Online (Sandbox Code Playgroud) 我正在尝试按照此处列出的说明重新安装我的Haskell库并启用性能分析
但是,每当cabal尝试重新安装其中一个库时,我都会收到以下消息:
LibraryNameHere.hs:1:1:
Could not find module `Prelude'
Perhaps you haven't installed the profiling libraries for package `base'?
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
当我尝试重新base启动并启用性能分析时,我收到以下消息:
me@machine:~/.cabal/$ cabal install -p base
Resolving dependencies...
All the requested packages are already installed:
base-4.5.0.0
Use --reinstall if you want to reinstall anyway.
me@machine:~/.cabal/$ cabal install --reinstall -p base
Resolving dependencies...
cabal: Could not resolve dependencies:
next goal: base (user goal)
rejecting: base-4.7.0.0, 4.6.0.1, 4.6.0.0, 4.5.1.0, …Run Code Online (Sandbox Code Playgroud) 以下是来自http://www.angelfire.com/tx4/cus/shapes/haskell98.html的代码.如果我在模块头中注释名称,它会在WinGHCi中正确编译和执行.但是如果保留了名称,那么它就不会编译 - 它会在名称MakeCircle上报告错误.我的问题是:如果我想明确提到我想导出MakeCircle,需要更改哪些代码?
module Circle -- (Circle, MakeCircle, getRadius, setRadius)
where
import Shape
class Shape a => Circle a where
getRadius :: a -> Int
setRadius :: a -> Int -> a
instance Shape CircleInstance where
getX = x
getY = y
setX a newx = a {x = newx}
setY a newy = a {y = newy}
moveTo a newx newy = a {x = newx, y = newy}
rMoveTo a deltax deltay = a {x = …Run Code Online (Sandbox Code Playgroud) 所以,这是一个个人问题,但也许人们会有很好的建议或解决方法.
问题是在Debian下安装cabal-install和haskell-platform.
当你apt-get install haskell-platform,它随附cabal-install,它的命令cabal可用.
现在这cabal-install不是最新的:
> which cabal
/usr/bin/cabal
> /usr/bin/cabal --version
cabal-install version 0.8.0
using version 1.8.0.2 of the Cabal library
Run Code Online (Sandbox Code Playgroud)
但是,我对跑步的理解cabal update是它更新了cabal,但由于它不是"Debian thingy",它将它放入~/.cabal/bin/.
> ~/.cabal/bin/cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library
Run Code Online (Sandbox Code Playgroud)
现在我的系统有2个cabals,而我输入cabal的那个不是我想要使用的那个...因为它会不断更新另一个而不是自己,因此无效.
所以我做的是我把它别名~/.bashrc:
alias cabal='~/.cabal/bin/cabal'
Run Code Online (Sandbox Code Playgroud)
现在:
> cabal --version
cabal-install version 0.8.2
using version 1.8.0.2 of the Cabal library
Run Code Online (Sandbox Code Playgroud)
所以,我最后的问题:
which cabal仍指向我的无用 …由于最新的Ubuntu 13.04没有haskell-plattform,我只下载了GHCi并且直到现在都没有问题.
但现在我想和monad一起工作.用它们导入它们
import Control.Monad.State
Run Code Online (Sandbox Code Playgroud)
例如不起作用.错误消息:
Could not find module `Control.Monad.State'
Perhaps you meant
Control.Monad.ST (from base)
Control.Monad.ST.Safe (from base)
Control.Monad.Fix (from base)
Use -v to see a list of the files searched for.
Failed, modules loaded: none.
Run Code Online (Sandbox Code Playgroud)
我该如何手动下载它们,还是有完全不同的问题?
这是什么cabal update输出:
Downloading the latest package list from hackage.haskell.org
cabal: out of memory (requested 2097152 bytes)
Run Code Online (Sandbox Code Playgroud)
原因可能是内存不足.怎么样tail 00-index.cache?
pkg: charade 0.1 b# 46384
pkg: charset 0.0 b# 46390
pkg: charset 0.1 b# 46393
pkg: charset 0.2.0 b# 46396
pkg: charset 0.2.1 b# 46399
pkg: charset 0.2.2 b# 46402
pkg: charset 0.2.3 b# 46405
pkg: charset 0.3 b# 46408
pkg: charset 0.3.0.1 b# 46412
Run Code Online (Sandbox Code Playgroud)
我可以00-index.tar.gz轻松下载并00-index.tar解开.但是,因为out of memory,我无法生成缓存文件!cabal能00-index.cache以廉价的方式在当地产生吗?
cabal --version …