FAQ
List是个链表结构的呀

在 2012年1月15日星期日UTC+8下午8时37分31秒,David Day写道:
如果List做不到增加元素,那么它和Array有什么区别?
--
您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

Search Discussions

  • Zhang Xiang at Oct 15, 2013 at 5:31 am
    List 是链表结构, 而且 List 支持 match (我是用 F# 的),这种 match 能很好的支持递归,比如

             let rec build (irItems:IRValue list) =
                 match irItems with
    [] -> failwith "Tuple cannot contain zero item."
    _ :: []
    _ :: _ :: []
    _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: _ :: [] ->
                     let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
                     let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
                     this.BuildStructNew(ctx, irTupleType, irItems)
    irItem0 :: irItem1 :: irItem2 :: irItem3 :: irItem4 ::
    irItem5 :: irItem6 :: irRestItems ->
                     let irRestTuple = build irRestItems
                     let irItems = irItem0 :: irItem1 :: irItem2 :: irItem3 ::
    irItem4 :: irItem5 :: irItem6 :: irRestTuple :: []
                     let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
                     let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
                     this.BuildStructNew(ctx, irTupleType, irItems)



    2013/10/15 Karl <yangshuan45@gmail.com>
    List是个链表结构的呀

    在 2012年1月15日星期日UTC+8下午8时37分31秒,David Day写道:
    如果List做不到增加元素,那么它和Array有什么区别?
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
  • Zhang Xiang at Oct 15, 2013 at 5:33 am
    所以我认为 list 主要是为了很好的配合递归使用,如果你只是要大量数据的容器,那么采用
    Java的(对于scala)或者.NET<http://xn--1nu597d.NET>的(对于F#)原始Collections
    type


    2013/10/15 Zhang Xiang <soloman817@gmail.com>
    List 是链表结构, 而且 List 支持 match (我是用 F# 的),这种 match 能很好的支持递归,比如

    let rec build (irItems:IRValue list) =
    match irItems with
    [] -> failwith "Tuple cannot contain zero item."
    _ :: []
    _ :: _ :: []
    _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: _ :: [] ->
    let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
    let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
    this.BuildStructNew(ctx, irTupleType, irItems)
    irItem0 :: irItem1 :: irItem2 :: irItem3 :: irItem4 ::
    irItem5 :: irItem6 :: irRestItems ->
    let irRestTuple = build irRestItems
    let irItems = irItem0 :: irItem1 :: irItem2 :: irItem3 ::
    irItem4 :: irItem5 :: irItem6 :: irRestTuple :: []
    let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
    let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
    this.BuildStructNew(ctx, irTupleType, irItems)



    2013/10/15 Karl <yangshuan45@gmail.com>
    List是个链表结构的呀

    在 2012年1月15日星期日UTC+8下午8时37分31秒,David Day写道:
    如果List做不到增加元素,那么它和Array有什么区别?
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
  • 杨栓 at Oct 15, 2013 at 6:19 am
    嗯嗯,配合递归。


    在 2013年10月15日下午1:33,Zhang Xiang <soloman817@gmail.com>写道:
    所以我认为 list 主要是为了很好的配合递归使用,如果你只是要大量数据的容器,那么采用 Java的(对于scala)或者.NET<http://xn--1nu597d.NET>的(对于F#)原始Collections
    type


    2013/10/15 Zhang Xiang <soloman817@gmail.com>
    List 是链表结构, 而且 List 支持 match (我是用 F# 的),这种 match 能很好的支持递归,比如

    let rec build (irItems:IRValue list) =
    match irItems with
    [] -> failwith "Tuple cannot contain zero item."
    _ :: []
    _ :: _ :: []
    _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: _ :: [] ->
    let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
    let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
    this.BuildStructNew(ctx, irTupleType, irItems)
    irItem0 :: irItem1 :: irItem2 :: irItem3 :: irItem4 ::
    irItem5 :: irItem6 :: irRestItems ->
    let irRestTuple = build irRestItems
    let irItems = irItem0 :: irItem1 :: irItem2 :: irItem3 ::
    irItem4 :: irItem5 :: irItem6 :: irRestTuple :: []
    let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
    let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
    this.BuildStructNew(ctx, irTupleType, irItems)



    2013/10/15 Karl <yangshuan45@gmail.com>
    List是个链表结构的呀

    在 2012年1月15日星期日UTC+8下午8时37分31秒,David Day写道:
    如果List做不到增加元素,那么它和Array有什么区别?
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛“Scala中文社区”中的主题。
    要退订此主题,请访问
    https://groups.google.com/d/topic/scalacn/uMCYp4P2hDY/unsubscribe。
    要退订此论坛及其所有主题,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
  • Lurga Lee at Oct 15, 2013 at 8:18 am
    foldleft用多了就理解了
    在 2013-10-15 PM2:19,"杨栓" <yangshuan45@gmail.com>写道:
    嗯嗯,配合递归。


    在 2013年10月15日下午1:33,Zhang Xiang <soloman817@gmail.com>写道:
    所以我认为 list 主要是为了很好的配合递归使用,如果你只是要大量数据的容器,那么采用 Java的(对于scala)或者.NET<http://xn--1nu597d.NET>的(对于F#)原始Collections
    type


    2013/10/15 Zhang Xiang <soloman817@gmail.com>
    List 是链表结构, 而且 List 支持 match (我是用 F# 的),这种 match 能很好的支持递归,比如

    let rec build (irItems:IRValue list) =
    match irItems with
    [] -> failwith "Tuple cannot contain zero item."
    _ :: []
    _ :: _ :: []
    _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: []
    _ :: _ :: _ :: _ :: _ :: _ :: _ :: [] ->
    let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
    let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
    this.BuildStructNew(ctx, irTupleType, irItems)
    irItem0 :: irItem1 :: irItem2 :: irItem3 :: irItem4 ::
    irItem5 :: irItem6 :: irRestItems ->
    let irRestTuple = build irRestItems
    let irItems = irItem0 :: irItem1 :: irItem2 :: irItem3
    :: irItem4 :: irItem5 :: irItem6 :: irRestTuple :: []
    let irItemTypes = irItems |> List.map (fun irItem ->
    irItem.Type) |> Array.ofList
    let irTupleType = IRStructType.Create(ctx.IRContext,
    IRStructOrUnionBuildingParam.Create(irItemTypes), false)
    this.BuildStructNew(ctx, irTupleType, irItems)



    2013/10/15 Karl <yangshuan45@gmail.com>
    List是个链表结构的呀

    在 2012年1月15日星期日UTC+8下午8时37分31秒,David Day写道:
    如果List做不到增加元素,那么它和Array有什么区别?
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛“Scala中文社区”中的主题。
    要退订此主题,请访问
    https://groups.google.com/d/topic/scalacn/uMCYp4P2hDY/unsubscribe。
    要退订此论坛及其所有主题,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。
    --
    您收到此邮件是因为您订阅了 Google 网上论坛的“Scala中文社区”论坛。
    要退订此论坛并停止接收此论坛的电子邮件,请发送电子邮件到 scalacn+unsubscribe@googlegroups.com
    要向此网上论坛发帖,请发送电子邮件至 scalacn@googlegroups.com
    要查看更多选项,请访问 https://groups.google.com/groups/opt_out。

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupscalacn @
postedOct 15, '13 at 5:28a
activeOct 15, '13 at 8:18a
posts5
users3

3 users in discussion

杨栓: 2 posts Zhang Xiang: 2 posts Lurga Lee: 1 post

People

Translate

site design / logo © 2019 Grokbase