【问题标题】:Tying the knot in cyclic records [closed]在循环记录中打结[关闭]
【发布时间】:2019-01-15 19:32:59
【问题描述】:

重写以下代码以便编译的最佳方法是什么?两种数据类型相互依赖。

{-# LANGUAGE OverloadedStrings, DuplicateRecordFields #-}   
data Syn = S { inputs :: [Neu] }
data Neu = N { weigth :: Double, inputs :: [ Syn ] }

【问题讨论】:

  • 这应该可以编译。什么不工作?但是,在ghci 中,您需要将其编写为多行语句。
  • 单行不起作用的原因是它首先解释第一行,然后Neu 是未知的。但是如果你同时输入这两行,那么编译器可以自己打结 :)。

标签: haskell cyclic-dependency


【解决方案1】:

你的代码编译得很好(我冒昧地给它一个模块名),没有错误:

% ghc -c so.hs
% cat so.hs
{-# LANGUAGE OverloadedStrings, DuplicateRecordFields #-}
module So where

data Syn = S { inputs :: [Neu] }
data Neu = N { weigth :: Double, inputs :: [ Syn ] }

% ls -l so.o
-rw-r--r--  1 tommd  wheel  4888 Aug  8 14:02 so.o

如果您遇到错误,请务必发布实际代码、用于编译或解释的命令、编译器版本以及错误消息本身。

【讨论】:

    猜你喜欢
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2012-10-04
    相关资源
    最近更新 更多