gpt4 book ai didi

haskell - 模块导入形成一个循环

转载 作者:行者123 更新时间:2023-12-05 03:05:18 24 4
gpt4 key购买 nike

你好,我想知道你如何解决 Haskell 中的循环依赖

我有:
类型模块。

module Company where

import Tclass

data Worker=Worker{
age::Int,
name::String,
title::Title,
income::Int
}

data Title=Manager | Dev | Tester deriving (Show)


data Company=Company{
cname::String,
people::[Worker],
yf::Int
}

类型类实例的模块

module Tclass where
import System.Environment
import Company

class Console a where
wLine::a->IO()
rLine::IO String->a

instance Show Worker where
show w="to be defined"
print =putStr . show

如果我只想在 ghci 中加载类型并使用它;我如何在不出现错误的情况下导入它们:

Module imports form a cycle:
module `Tclass' (.\Tclass.hs)
imports `Company' (Company.hs)
which imports `Tclass' (.\Tclass.hs)

P.S 我已经尝试创建一个辅助模块来导入这两个模块并且这两个模块也会导入它,但是这个模块也没有运气:

module Au where
import Tclass
import Company

module Company
import Au

module Tclass
import Au

最佳答案

将 Show 实例移动到另一个模块,可以打破循环:

module Tclass where
import System.Environment
import Company

class Console a where
wLine::a->IO()
rLine::IO String->a

module Company where

data Worker=Worker{
age::Int,
name::String,
title::Title,
income::Int
}
instance Show Worker where
show w="to be defined"
print =putStr . show

data Title=Manager | Dev | Tester deriving (Show)

data Company=Company{
cname::String,
people::[Worker],
yf::Int
}

关于haskell - 模块导入形成一个循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51130450/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com