Haskell-Stack не может построить проект с зависимостью от DateTime, несмотря на запись в stack.yaml

Поэтому я пытаюсь добавить этот пакет: datetime-0.3.1 и Я добавил, думаю, правильную ссылку в файл stack.yaml. Я пытался использовать решатель стека, но его больше не существует. Я также искал какой-то эквивалент pip, поэтому я мог просто выполнить stack install datetime-0.3.1 или что-то подобное, но, похоже, это не то, что делает стек.

Код:

module FhirDataTypes (
    FhirId (..),
    toFhirId
) where

import Data.Maybe (Maybe(..))
import Data.List (length)
import Coding as Coding
import Data.Decimal
import FhirUri (FhirUri(..))
import FhirString (FhirString(..))
import SimpleQuantity (SimpleQuantity(..))
import Data.DateTime

newtype FhirId = FhirId FhirString deriving (Show)

toFhirId :: FhirString -> Maybe FhirId
toFhirId fs@(FhirString s)
    | length s > 64 = Nothing
    | otherwise = Just $ FhirId fs

data Money = Money  { value :: Decimal
                    , currency :: Code
}

data Range = Range  {   low :: SimpleQuantity
                    ,   high :: SimpleQuantity
}

data Ratio = Ratio  {   numerator :: Quantity
                    ,   denominator :: Quantity
}

data Period = Period    { start :: DateTime
                        , end :: DateTime
}

Ошибка, которую я получаю:

PS C:\util\haskell\fhir-practice> stack build

Error: While constructing the build plan, the following exceptions were encountered:

In the dependencies for fhir-practice-0.1.0.0:
DateTime needed, but the stack configuration has no specified version (no package with that name found, perhaps there is a typo in
         a package's build-depends or an omission from the stack.yaml packages list?) needed since fhir-practice is a build target.

Some different approaches to resolving this:


Plan construction failed.

Мой файл stack.yaml:

flags: {}
packages:
- .
extra-deps: 
- network-  uri-2.6.1.0@sha256:62cc45c66023e37ef921d5fb546aca56a9c786615e05925fb193a70bf0913690
- Decimal-0.4.2
- datetime-0.3.1
resolver: lts-13.24

person horatius83    schedule 28.06.2019    source источник
comment
(1) stack install в основном используется для глобальной установки двоичных файлов, а не для пакетов, специфичных для проекта. (2) У вас есть файл .cabal или файл package.yaml? datetime пишется под dependencies? Обратите внимание на написание всех строчных букв. Непонятно, почему стек считает, что DateTime является подходящим регистром. (3) Вы уверены, что хотите datetime вместо time? Последний все еще поддерживается, тогда как последняя загрузка для datetime была 4 года назад.   -  person typesanitizer    schedule 28.06.2019
comment
Если вы хотите опубликовать свой комментарий в качестве ответа, я с радостью отмечу его как таковой. Использование UTCTime вместо DateTime и добавление ссылки в stack.yaml (time-1.8.0.2@sha256:e71437d137e609599afd09f70d50a4d20a123610d303d03ab094440a5a77cc6b,5409) решило проблему.   -  person horatius83    schedule 28.06.2019


Ответы (1)


  1. stack install в основном используется для глобальной установки двоичных файлов, а не для пакетов, специфичных для проекта.

  2. Вероятно, вы захотите использовать пакет time, а не datetime. поскольку первый активно поддерживается. Более того, в вашем случае время присутствует в LTS-13.24, поэтому вам не следует не нужно добавлять его в экстра-депс. Поле extra-deps предназначено только для зависимостей (включая транзитивные), которых нет в вашем распознавателе.

person typesanitizer    schedule 28.06.2019