小编soc*_*soc的帖子

是否有一种编程语言具有完整和正确的Unicode支持?

大多数编程语言都对Unicode 有一些支持,但是所有编程语言都有一些或多或少的记录的极端情况,其中的东西将无法正常工作.


例子

Java: StringBuilder/StringBuffer中的reverse()正常工作.但是如果一个字符需要超过16位进行编码,那么String中的length(),charAt()等就不会出现.

C#: 没有找到正确的反向方法,长度和索引访问返回错误的结果.

Perl:同样的问题.

PHP: 根本没有Unicode的想法,mbstring有一些更好的工作替代品.


我想知道是否有一种编程语言,它具有完整和正确的Unicode支持?那里必须做出什么妥协才能实现这样的目标?

  • 更复杂的算法?
  • 更高的内存消耗?
  • 表现较差?

它是如何在内部实施的?

  • Ints,链接列表等数组
  • 额外的缓冲

我看到Python 3在这方面有一些很大的变化.Python 3现在与正确的实现有多接近?

language-agnostic string unicode encoding programming-languages

8
推荐指数
5
解决办法
1276
查看次数

为什么Option的orNull方法有这个多余的隐式参数?

我想知道这里的原因是什么(implicit ev: Null <:< A1):

sealed abstract class Option[+A] extends Product with Serializable { 
  def orNull[A1 >: A](implicit ev: Null <:< A1): A1 = this getOrElse null
  ...
}
Run Code Online (Sandbox Code Playgroud)

岂不

def orNull[A]: A = this getOrElse null
Run Code Online (Sandbox Code Playgroud)

考虑到它似乎甚至不适用于像这样的值类型

Option(1).orNull
Run Code Online (Sandbox Code Playgroud)

Option(1).getOrElse(null)
Run Code Online (Sandbox Code Playgroud)

呢?

Option源代码

parameters scala implicit scala-option

8
推荐指数
2
解决办法
4467
查看次数

Scala集合的seq/par/view/force是否会被视为违反统一返回类型原则?

集合框架的大部分实现复杂性源于这样一个事实:Scala可以 - 不像C#的LINQ或其他集合框架 - 返回高阶函数的"最佳"集合类型:

val numbers = List(1,2,3,4,5)
numbers map (2*) // returns a List[Int] = List(2, 4, 6, 8)

val doubles = Array(1.0, 2.0, 3.0)
doubles filter (_ < 3) // returns Array[Double] = Array(1.0, 2.0)
Run Code Online (Sandbox Code Playgroud)

为什么这个原则不能保持类似的方法seq,par,view,force

numbers.view.map(2*).force 
// returns Seq[Int] = List(2, 4, 6, 8)

numbers.seq 
// returns scala.collection.immutable.Seq[Int] = List(1, 2, 3, 4)

doubles.par.seq 
// returns scala.collection.mutable.ArraySeq[Double] = ArraySeq(1.0, 2.0, 3.0)
Run Code Online (Sandbox Code Playgroud)

是否有技术限制阻止其工作?或者这是设计/意图?考虑到LINQ基本上是懒惰的,Scala的等价物(view,force)不是更加类型安全的(只有在使用严格的方法时),对吧?

c# linq collections types scala

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

如何使用Scala Parser Combinators更改代码以考虑运算符优先级?

考虑这部分语法:

  def expression = SimpleExpression ~ opt(relation ~ SimpleExpression)
  def relation = "=" | "#" | "<=" | "<" | ">=" | ">" | "IN" | "IS"
  def SimpleExpression = opt("+" | "-") ~ rep1sep (term, AddOperator)
  def AddOperator = "+" | "-" | "OR"
  def term = factor ~ rep(MulOperator ~ factor)
  def MulOperator = "*" | "/" | "DIV" | "MOD" | "&"
  def factor: Parser[Any] = number | "(" ~ expression ~ ")" | "~" ~ factor …
Run Code Online (Sandbox Code Playgroud)

parsing scala operators operator-precedence parser-combinators

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

如何使用AspectJ支持在Eclipse中创建Maven项目?

似乎必须在使用某些特定于Eclipse的配置或"Maven项目"的"AspectJ项目"之间进行选择,然后尝试正确获取AspectJ的XML配置.

是否有一些我缺少的Eclipse功能,或者是否有一个"预制"/教程项目,我可以作为一个开始使用?

PS:我正在使用Eclipse 3.7(Indigo).

java eclipse aop project-management maven

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

使用scalaz进行开发是否需要类似Unicode/APL的键盘?

可以在没有包含适当Unicode字符的键盘的情况下使用scalaz,或者每个Unicode标识符是否也具有等效的"ASCII"(如果是,是否保证它保持这种方式)?是否有特殊的键盘布局用于scalaz?

什么是最佳做法?直接输入Unicode标识符或使用ASCII替换并使用脚本在提交之前用Unicode替换它们?

unicode scala apl scalaz

8
推荐指数
2
解决办法
447
查看次数

从语言实现的角度来看,在F#3.0中实现类型提供程序有什么必要?

F#3.0添加了类型提供程序,这使得基本上不必手动编写或生成DB(或其他数据提供程序)与语言/类型系统之间的映射,因为该语言可以直接使用类型提供程序从数据库本身查询结构信息.

从语言实现的角度来看,为语言添加这样的功能有什么必要?

它需要一个完全可插拔的类型系统吗?或者它更像是一些集成到编译器中的隐藏代码生成器?

为F#实现新类型提供程序需要什么?

database f# language-design type-providers

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

在语言中支持/整合测量单位的策略是什么?

我想从纯语言设计的角度来看,哪些"特征"(语义和句法)是SI单位的"实现"需要.

如果有人声称某种语言对测量单位有很大的支持,那么通常会预期哪些"功能"?

  • 就像特殊文字或语法糖一样?
  • 特殊约定使单位类型安全(但没有昂贵的运行时包装)?
  • 用于计算分数的特殊数学模式?
  • 单位之间的自动转换和强制?

例如,F#集成了对语言中测量单位的支持.它如何改进例如Java

应该在语言中加入哪些功能以提高单元的可用性?哪些功能不一定与测量单位有关,但实现更好?

java f# language-design units-of-measurement

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

是否有可能为Scala中的测量单位实施F#的基础设施?

F#附带了对测量单位系统的特殊支持,该系统提供静态类型安全性,同时编译为数字类型,而不是通过包装/展开操作增加运行时的负担.

是否有可能使用一些Scala的类型系统魔法来实现与之相当的东西?

f# types scala language-design units-of-measurement

8
推荐指数
2
解决办法
470
查看次数

异步/等待模式和延续之间的关系是什么?

我想知道async/ awaitpattern(从Scala,F#,C#等已知)和continuation 之间的关系是什么:

  • async/ await模式全面爆发延续的一个有限的子集?(如果是真的,那么延续更具表现力?)
  • 是延续的只是一种可能的实现技术async/ await?(如果是,那么还有其他实现方法吗?)
  • 或者async/ await和/ 和延续只是正交概念,其中唯一的共同点是它们都能实现控制流/数据流的一些抽象?

concurrency continuations asynchronous async-await delimited-continuations

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