我是Haskell的新手; 我已经阅读了无数的教程和其他资源,但每当我决定尝试编写远程有用的程序时,我通常都不知道从哪里开始.我最近在播放一个播客,Gabriel Gonzalez谈到了保持动力的最佳方式是如何将它用于项目并且只是写作,所以我真的想用它来完成我手边的任务.
所以,我有一个Mongo数据库,它不断更新定期抓取的项目,以及一个Elasticsearch数据库.前者经常会更新我之前已经删除的项目,而后者则填充了独特的项目.为了达到这个目的,我有一个脚本(1000行Node.js),它一直在运行并逐个消耗Mongo数据库中的项目,进行一些检查以查看它是否已经存在于Elasticsearch数据库中,如果不是,则添加它; 之后,它从Mongo中删除了.然而,这个脚本完全混乱.
我一直想在Haskell中做这件事,因为Haskell非常适合以我自己读过和听过的方式来控制IO,因为我喜欢保持纯函数来转换数据和部分程序实际执行IO分离.我还假设一个有效的Haskell解决方案会更简洁,并且在以后更改内容时更容易推理.
到目前为止,我已经设法使用mongoDB包来按照教程在Mongo中进行CRUD操作,但是仍然有很多我不了解它的工作方式.我发现使用Bloodhound包更难以在Elasticsearch中做同样的事情,我完全不知道如何将事情拼凑在一起,特别是在确保相关项目仅在成功添加后从Mongo中删除时到Elasticsearch.
我知道这是一个非常广泛的问题,但如果有人对此有所了解,或者只是能够给我一些指导,我将不胜感激.事实上,非常感谢所有的帮助.