Functional programming 函数式语言提供明确的数据结构表示是什么意思?

Functional programming 函数式语言提供明确的数据结构表示是什么意思?,functional-programming,Functional Programming,我读了第1.13章,看到了。什么是命令式语言中通常缺少的“显式数据结构表示”?谁能举个例子吗 谁能举个例子吗 这只是隐式结构数组的一个例子,与显式结构链表相比 下面的程序可以用无数种方式编写。这两个例子都不是特别令人惊讶。每一个例子都只是为了展示你可以在野外看到的代码 概述 数组是一个非显式的、模糊的索引->值映射桶。它需要使用任意索引输入来读取值。您可以使用计数器对其进行“迭代”,但实际上计数器与数组本身没有任何关系—您仍然只是使用任意索引执行随机查找—不管它们是否在“序列”中 是一个显

我读了第1.13章,看到了。什么是命令式语言中通常缺少的“显式数据结构表示”?谁能举个例子吗

谁能举个例子吗

这只是隐式结构数组的一个例子,与显式结构链表相比

下面的程序可以用无数种方式编写。这两个例子都不是特别令人惊讶。每一个例子都只是为了展示你可以在野外看到的代码


概述

数组是一个非显式的、模糊的
索引
->
映射桶。它需要使用任意索引输入来读取值。您可以使用计数器对其进行“迭代”,但实际上计数器与数组本身没有任何关系—您仍然只是使用任意索引执行随机查找—不管它们是否在“序列”中


是一个显式结构化的数据容器。它有一个定义的开始、结束和有意义的方式来编程地与结构交互。处理列表从
car
开始,然后使用
cdr
继续,直到找到空终止符。它还有创建新对的明确方法(
cons


非显式代码示例

这里我们有一个用JavaScript编写的命令式程序。可以说,这个计划没有结构

  • xs
    是一个全局定义的数组,本质上是一个大的赋值块–与索引链接的值
  • doSomething
    根据提供的索引更改赋值–它在
    xs
  • main
    还具有
    xs
    的隐性知识–或者至少,它具有
    doSomething
    xs
    上运行的隐性知识
  • 还请注意,由于
    doSomething
    仅设置已知索引的新赋值,因此它会改变原始输入
  • main
    没有显式输出;它隐式地依赖于
    doSomething
    来更改底层数据,
    xs
功能剂量仪(i){
xs[i]=“已更改”
}
函数main(){
剂量测定法(1)
剂量测定法(2)
}
设xs=['a','b','c','d','e']
console.log(xs)/['a','b','c','d','e']
console.log(main())//未定义
console.log(xs)/['a','changed','changed','d','e']