小编Jae*_*aen的帖子

在Haskell中从矩阵中提取对角线的最佳方法是什么?

我被要求编写一个函数来提取存储为列表列表的矩阵的对角线.第一个版本是通过索引列表来提取数字,但我很快得出结论,它对Haskell来说不是一个好的算法,并编写了另一个函数:

getDiagonal :: (Num a) => [[a]] -> [a]
getDiagonal [[]]       = []
getDiagonal (xs:[])    = [head xs]
getDiagonal (x:xs)     = head x : getDiagonal (map tail xs)
Run Code Online (Sandbox Code Playgroud)

因为我刚开始学习Haskell,所以我不确定它是用惯用的方式编写还是表现不错.

所以我的问题是有没有更好的方法从存储在这种表示中的矩阵中提取对角线,或者如果没有更好的算法可以构造,如果矩阵是使用更高阶的Haskell概念表示,如代数类型?在模式匹配中解构列表如何((x:_):xs)或者如上所示的head函数之间是否有任何性能差异?

编辑:实际上更多的好奇的询问而不是作业,他们不在这里教技术大学的函数式编程(我认为这是一个很小的问题),但我会留下标签.

algorithm haskell matrix

12
推荐指数
3
解决办法
4753
查看次数

编写可伸缩的Web服务服务器的最佳语言/库选择是什么?

我参与了一个编写游戏传播和服务平台的项目,这将使游戏开发者能够轻松地外包游戏发布和更新,以及提供多人/社区的某些部分,如成就,排名,朋友等. web服务,采用SOAP或REST API的形式.

我不确定它在获得市场份额方面的可行性,但是应该编写应用程序,以便横向扩展以吸收任何数量的可能用户.由于该项目仍处于早期阶段,因此对所使用的语言和技术有一定程度的影响.

到目前为止,我的研究已经将选择范围缩小到Erlang或基于JVM的语言.
Erlang因其专注于可扩展和容错的分布式应用程序以及成熟的跟踪记录而广为人知,但另一方面,它的库生态系统远没有JVM那么丰富.另一方面,JVM语言享有一个拥有众多库的大社区,其中许多都致力于提供分布式和可靠的服务,例如Terracota或Akka(这似乎是受到Erlang的启发,尽管我不知道有多少它接近并希望听到它的力量).
由于语言生产力与平台强度和可靠性同等重要,如果我使用JVM,我会倾向于Scala或Clojure而不是Java.当然,如果你认为还有另一种语言(JVM或非语言)更适合这样的任务,我很想知道它.

我不想阅读语言的酷炫功能的清单列表,因为我可以自己谷歌,我宁愿对你自己编写这样一个应用程序的经历感兴趣(有点像这些博客的链接 - 链接)虽然不仅涉及原始性能,还涉及语言和库问题.

我想听听您(或贵公司)对这类项目的语言和技术选择是什么,这种选择的动机是什么,您使用所选平台的经历是什么,并最终实现了它.
我们将非常感谢所有的见解; )

erlang distributed scala clojure akka

2
推荐指数
1
解决办法
495
查看次数

编写支持OpenGL的GUI

我正在探索编写一种笔记本类似物的可能性,它可以重现使用传统笔记本的外观和感觉,但还有一个额外的好处,就是你无法在纸上进行自定义页面 - 请求程序放置在这里统治纸张,网格纸张,粘贴图像,从内置相机插入记录,尝试在平板电脑输入上进行手写识别,插入一些乳胶用于整洁的公式等等.我很感兴趣开发它只是为了看看在电脑上写笔记是否可以接近舒适普通纸+铅笔提供(很难做IMO)并且可以随时将其作为大学C++项目转换,所以在那里获得双倍收益.

来自项目类型的用户界面有一些要求:

  • 用户可以按照自己的意愿缩放,移动和旋转笔记本,我认为将其委托给OpenGL非常明智,因此预期的GUI需要与OGL配合使用(最好是在其中渲染)
  • 界面应该可以通过用户希望的键盘输入(可能包含某种手势)来导航,直到限制键盘键作为笔移动和敲击的修饰符; 这包括平板电脑和可能的多点触控支持
  • 界面应该保持在不需要的地方,并在需要的地方出现,并且易于点亮
  • 笔记本表本身将是表示笔记本模糊的对象的容器,因此如果GUI能够在OpenGL绘制的工作表的精确部分上覆盖一些帧以表示可以对给定部分做什么,那将是很好的(比如移动,旋转,删除,复制,编辑等)和它的范围

在界面方面,它可能最终会与Alias的Sketch Book Pro:picture相似 .

就工具包而言,我正在考虑Qt和nui,但我并不是真的意识到它们与这些要求的匹配程度以及它们处理这样一个应用程序的能力如何.
据我所知,你可以用某种方式强迫Qt用OpenGL做小部件绘图,但另一方面我听到声音它的插槽信号框架并不是最完美的并且需要它自己的预处理器而我不知道会有多难在Qt的约束下做我需要的所有自定义小部件(比如颜色轮,标尺,模糊框架,模糊选择,平板电脑目标弹出菜单等).我在我的机器上也有很多Qt程序看起来非常缓慢,但可能归因于我让旧PC或程序员使用Qt次优而不是框架本身.
至于nui(http://www.libnui.)我知道它也是跨平台的,你需要一个GUI工具包的所有基本的东西,最大的优点是从一开始就支持OpenGL,但我不知道它是如何使用自定义小部件和其他方面,它肯定比Qt具有更小的用户群和更少的精细文档.

问题是:

这些工具包是否满足(最好是全部)要求,或者有一个我没有遇到的合适的工具包,或者我应该卷起袖子,获得SFML(或者Clutter可能更适合这个?)像FastDelegates或libsigc ++这样的东西,我自己从头开始编写GUI框架?
如果有人有类似GUI项目的经验并且可以提供一些评论这些工具包的表现如何,或者在这种情况下追求自己的GUI工具包是值得的,我会很高兴.

对不起,长期以来,呃.

c++ opengl user-interface

1
推荐指数
1
解决办法
1461
查看次数