看作Void无人居住的类型,它可以被视为一种"构造者"吗?或者这只是一个快速"黑客"能够安全地忽略/禁用功能,我是否深入研究这个?
在Haskell中,有两种方法可以为类型提供别名:type和newtype.type提供类型同义词,这意味着类型检查器将同义词视为与原始类型完全相同:
type UserId = Int
hasAccess :: UserId -> Bool
hasAccess id = {-- stuff --}
-- Elsewhere in the program
login :: Int -> Bool
login n = hasAccess n -- Typechecker won't complain
Run Code Online (Sandbox Code Playgroud)
A newtype类似,但类型检查器将其视为不同类型:
newtype UserId = UserId Int
hasAccess :: UserId -> Bool
hasAccess (UserId id) = {-- stuff --}
-- Elsewhere in the program
login :: Int -> Bool
login n = hasAccess n -- Typechecker …Run Code Online (Sandbox Code Playgroud) 我正在创建一个Yesod子网站,并在一些模板Haskell生成的代码中出现类型错误:
Yesod\DataSource\Data.hs:19:1:
Couldn't match type `[Char]' with `Text'
Expected type: () -> ([Text], [(Text, Text)]) -> Maybe (Route DataSource)
Actual type: () -> ([[Char]], [(Text, Text)]) -> Maybe (Route DataSource)
In the first argument of `\ f_amMs x_amMt -> f_amMs () x_amMt ::
forall a_amMu.
(() -> ([Text], [(Text, Text)]) -> Maybe (Route a_amMu))
-> ([Text], [(Text, Text)]) -> Maybe (Route a_amMu)', namely
`helper_amMr'
In the expression:
\ f_amMs x_amMt -> f_amMs () x_amMt ::
forall a_amMu.
(() -> ([Text], …Run Code Online (Sandbox Code Playgroud) 我正在为 hakyll 编译创建一个 docker 映像。这是泊坞窗文件:
FROM haskell:7.10
RUN cabal update && cabal install hakyll
Run Code Online (Sandbox Code Playgroud)
该文件位于我的 D: 驱动器上的某个文件夹中:D:\Haskell\docker\docker-hakyll。
我在 Windows 上使用 Boot2Docker 来构建它。docker images给我
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 195a730d8827 33 minutes ago 1.464 GB
haskell 7.10 11849cc2a27b 3 days ago 716.2 MB
Run Code Online (Sandbox Code Playgroud)
docker build .做
Step 0 : FROM haskell:7.10
---> 11849cc2a27b
Step 1: RUN cabal update && cabal install hakyll
---> 195a730d8827
Successfully built 195a730d8827
Run Code Online (Sandbox Code Playgroud)
有人知道吗?我怎么可以docker run这样呢?或者甚至重命名它?