在循环记录中打结

Tying the knot in cyclic records

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

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

你的代码编译正常(我冒昧地给它起了一个模块名),没有错误:

% 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

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