我有一个名为day-2的目录(与问题无关,只是通过代码的到来),在其中运行cabal init。
这个init命令生成一个day-2.cabal文件:
cabal-version: 3.4
-- The cabal-version field refers to the version of the .cabal specification,
-- and can be different from the cabal-install (the tool) version and the
-- Cabal (the library) version you are using. As such, the Cabal (the library)
-- version used must be equal or greater than the version stated in this field.
-- Starting from the specification version 2.2, the cabal-version field must be
-- the first thing in the cabal file.
-- Initial package description 'day-2' generated by
-- 'cabal init'. For further documentation, see:
-- http://haskell.org/cabal/users-guide/
--
-- The name of the package.
name: day-2
-- The package version.
-- See the Haskell package versioning policy (PVP) for standards
-- guiding when and how versions should be incremented.
-- https://pvp.haskell.org
-- PVP summary: +-+------- breaking API changes
-- | | +----- non-breaking API additions
-- | | | +--- code changes with no API change
version: 0.1.0.0
-- A short (one-line) description of the package.
-- synopsis:
-- A longer description of the package.
-- description:
-- The license under which the package is released.
license: AGPL-3.0-or-later
-- The file containing the license text.
license-file: LICENSE
-- The package author(s).
author: <redacted>
-- An email address to which users can send suggestions, bug reports, and patches.
maintainer: <redacted>
-- A copyright notice.
-- copyright:
build-type: Simple
-- Extra doc files to be distributed with the package, such as a CHANGELOG or a README.
extra-doc-files: CHANGELOG.md
-- Extra source files to be distributed with the package, such as examples, or a tutorial module.
-- extra-source-files:
common warnings
ghc-options: -Wall
executable day-2
-- Import common warning flags.
import: warnings
-- .hs or .lhs file containing the Main module.
main-is: Main.hs
-- Modules included in this executable, other than Main.
-- other-modules:
-- LANGUAGE extensions used by modules in this package.
-- other-extensions:
-- Other library packages from which modules are imported.
build-depends: base ^>=4.12.0.0
-- Directories containing source files.
hs-source-dirs: app
-- Base language which the package is written in.
default-language: Haskell2010下面是它创建的文件列表:
$ find . -type f
./app/Main.hs
./LICENSE
./CHANGELOG.md
./day-2.cabal
./dist-newstyle/cache/compiler
./README.md # I created this one myself, manually我去编译了我的app/Main.hs文件,该文件如下所示:
module Main where
main :: IO ()
main = putStrLn "hello"当我运行cabal build时,会得到以下错误:
$ cabal build
Errors encountered when parsing cabal file ./day-2.cabal:
day-2.cabal:14:26: error:
unexpected end of input
1 | cabal-version: 3.4
2 | -- The cabal-version field refers to the version of the .cabal specification,
3 | -- and can be different from the cabal-install (the tool) version and the
4 | -- Cabal (the library) version you are using. As such, the Cabal (the library)
5 | -- version used must be equal or greater than the version stated in this field.
6 | -- Starting from the specification version 2.2, the cabal-version field must be
7 | -- the first thing in the cabal file.
8 |
9 | -- Initial package description 'day-2' generated by
10 | -- 'cabal init'. For further documentation, see:
11 | -- http://haskell.org/cabal/users-guide/
12 | --
13 | -- The name of the package.
14 | name: day-2
| ^我没看到其他人在谈论这个特别的问题。
这是我的阴谋版本:
$ cabal --version
cabal-install version 3.8.1.0
compiled using version 3.8.1.0 of the Cabal library 不确定是否相关,但这也是我的ghc版本:
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 8.6.5我应该说,昨天我在一个不同的目录下运行了cabal init (对于第1天),它使我的Main.hs和day-1.cabal文件变得很好,并且它能够构建和运行而没有问题。
不知道问题出在哪里,希望有人知道出了什么问题。
发布于 2022-12-02 15:57:38
包名可能包含字母、数字和连字符,但不包含空格,也可能不包含仅由数字组成的连字符部分。 https://cabal.readthedocs.io/en/stable/developing-packages.html#package-names-and-versions
否则,语法$PACKAGE-$VERSION将是模糊的。
https://stackoverflow.com/questions/74658335
复制相似问题