Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 用Haskell表示电路_Sql_Haskell - Fatal编程技术网

Sql 用Haskell表示电路

Sql 用Haskell表示电路,sql,haskell,Sql,Haskell,考虑以下电路的简化模型: MySQL: 作为一个例子,考虑两个有点无意义的电路。 回路中连接的电阻器: RES +---/\/\/--+ | A B | | | | RES | ----/\/\/--+ B A 使用我前面描述的数据库结构,可以 代表如下: insert into circuit (name) values ('example'); set @c = last_in

考虑以下电路的简化模型: MySQL:

作为一个例子,考虑两个有点无意义的电路。 回路中连接的电阻器:

        RES
    +---/\/\/--+
    |   A   B  |
    |          |
    |   RES    |
    ----/\/\/--+
        B   A
使用我前面描述的数据库结构,可以 代表如下:

insert into circuit (name) values ('example');
set @c = last_insert_id();

insert into device (circuit_id, chip) values (@c, 'RES');
set @r1 = last_insert_id();
insert into pin (device_id, name) values (@r1, 'A');
set @a1 = last_insert_id();
insert into pin (device_id, name) values (@r1, 'B');
set @b1 = last_insert_id();

insert into device (circuit_id, chip) values (@c, 'RES');
set @r2 = last_insert_id();
insert into pin (device_id, name) values (@r2, 'A');
set @a2 = last_insert_id();
insert into pin (device_id, name) values (@r2, 'B');
set @b2 = last_insert_id();

insert into wire (circuit_id, pin1_id, pin2_id) values
  (@c, @b1, @a2), (@c, @b2, @a1);

我如何在Haskell中表示这种结构?它不会绑定到SQL数据库,只是为了精确定义我试图表示的结构。

您的pin表类似于图形的邻接列表,因此我会使用图形库-Data.graph或Data.graph.inclusive。

您的pin表类似于图形的邻接列表,所以我会使用一个图形库-Data.graph或Data.graph.inclusive。

我知道你的直觉反应是期待尝试一个解决方案,但这实际上是一个坏主意。我曾经问过一个类似的问题,也是出于同样的困惑,我试图找到一个解决方案,但不知怎的,这让所有的答案都偏离了讨论我糟糕实现的细节。我在寻找别人会怎么做,而不是我会怎么做。你可以看看Hackage上的熔岩内容:。@DanielWagner:谢谢。我会通读这些,从中获得灵感。我知道你的直觉反应是期待一个解决方案的尝试,但这实际上是个坏主意。我曾经问过一个类似的问题,也是出于同样的困惑,我试图找到一个解决方案,但不知怎的,这让所有的答案都偏离了讨论我糟糕实现的细节。我在寻找别人会怎么做,而不是我会怎么做。你可以看看Hackage上的熔岩内容:。@DanielWagner:谢谢。我将通读它们以获得灵感。对于库来说,包名比模块名更有用。在这种情况下,我认为这是最完整、最有效的选择,很可能就是这个答案中提到的那个。@DanielWagner:看起来像是数据。Graph来自,Data.Graph.Inclusive来自。@Snowball:没错。Graph对于基本的东西来说很好,但是fgl功能更全面。对于库,包名比模块名更有用。在这种情况下,我认为这是最完整、最有效的选择,很可能就是这个答案中提到的那个。@DanielWagner:看起来像是数据。Graph来自,Data.Graph.Inclusive来自。@Snowball:没错。Graph对于基本的东西来说很好,但fgl的功能更加全面。
insert into circuit (name) values ('example');
set @c = last_insert_id();

insert into device (circuit_id, chip) values (@c, 'RES');
set @r1 = last_insert_id();
insert into pin (device_id, name) values (@r1, 'A');
set @a1 = last_insert_id();
insert into pin (device_id, name) values (@r1, 'B');
set @b1 = last_insert_id();

insert into device (circuit_id, chip) values (@c, 'RES');
set @r2 = last_insert_id();
insert into pin (device_id, name) values (@r2, 'A');
set @a2 = last_insert_id();
insert into pin (device_id, name) values (@r2, 'B');
set @b2 = last_insert_id();

insert into wire (circuit_id, pin1_id, pin2_id) values
  (@c, @b1, @a2), (@c, @b2, @a1);