Jam*_*mes 46 computer-science programming-languages functional-programming
我对这是什么有一个粗略的想法,但如果有人对"表达问题"的解释他们认为简洁直观我很乐意听到它.
Dan*_*kov 42
看这个讲座.
我们的想法是,您的程序是数据类型和操作的组合.该问题要求实现允许添加类型和新操作的新案例,而无需重新编译旧模块并保持静态类型安全(无强制转换或运行时类型检查).
有趣的是,在函数式编程语言中,添加新操作很容易,但很难将案例添加到数据类型中.虽然在OO语言中,它是相反的.这是两种编程范式之间的重大概念差异之一.
Cal*_*ius 18
问题背后的想法是文本是一维的.即使你有行和列,你通常一行一字地逐行阅读.编译器也是如此.
并且您尝试在其中表示某种2维或更多维数据.例如,行 - 市长顺序的表格如下所示:
((A, B, C), (D, E, F), (G, H, I))
Run Code Online (Sandbox Code Playgroud)
在此表示中,最后添加一个新行非常容易,而不触及其余部分:
((A, B, C), (D, E, F), (G, H, I), (J, K, L))
Run Code Online (Sandbox Code Playgroud)
但添加列有点问题,你需要触摸4个不同的地方:
((A, B, C, M), (D, E, F, N), (G, H, I, O), (J, K, L, P))
Run Code Online (Sandbox Code Playgroud)
在处理抽象类时,您通常会遇到这个问题:将新子类型添加为新模块非常容易,但是当您添加新的抽象方法时,您需要触摸所有模块并添加它; 你需要在很多地方做同样的事情.通常你会抽象来防止这些重复的事情.
只要您使用1D表示,就无法解决此问题.
这个问题的解决方案是一个编辑器,可以让你编辑这些表,就像真正的表格而不是像文本一样(在Excel视图中,你可以方便地添加新的列和行).
| 归档时间: |
|
| 查看次数: |
5709 次 |
| 最近记录: |