Em sua essência, uma planilha é uma linguagem funcional com digitação dinâmica e cada função ou valor pode ser referenciado como uma célula na matriz.
Em vez de coisas como (defn some-name ...)
a some-name
peça é colocada na própria célula.
Se você acessar um ide de linguagem funcional com atualização dinâmica (como lighttable para clojure), verá a mesma funcionalidade de uma planilha. Vincule um valor a um nome, escreva uma função que use esse valor, altere o valor e a saída da função muda imediatamente. É o mesmo que fazer algo como escrever =A1 + B2
no local do C3
excel.
Assim, programadores funcionais geralmente gostam de escrever planilhas como programas de brinquedos ... e também o assunto de trabalhos de pesquisa. (Sim, desculpe, todos eles estão por trás de um paywall do ACM.org)
Programação funcional da planilha
A comunidade de programação funcional mostrou algum interesse em planilhas, mas surpreendentemente ninguém parece ter considerado fazer uma planilha padrão, como o Excel, trabalhar com uma linguagem de programação funcional padrão, como Haskell. Neste artigo, mostramos uma maneira de fazer isso. Nossa esperança é que, ao fazer isso, possamos obter programadores de planilhas para experimentar a programação funcional.
Forms / 3: uma linguagem visual de primeira ordem para explorar os limites do paradigma da planilha
Embora os detratores da programação funcional às vezes afirmem que a programação funcional é muito difícil ou contra-intuitiva para a maioria dos programadores entender e usar, evidências contrárias podem ser encontradas observando a popularidade das planilhas. O paradigma da planilha, um subconjunto de primeira ordem do paradigma de programação funcional, encontrou ampla aceitação entre programadores e usuários finais. Ainda assim, existem muitas limitações na maioria dos sistemas de planilhas. Neste artigo, discutimos características da linguagem que eliminam várias dessas limitações sem se desviar do modelo de avaliação declarativa de primeira ordem.
Implementando planilhas de funções
Uma grande quantidade de desenvolvimento do usuário final é feita com planilhas. A metáfora da planilha é atraente porque é visual e acomoda experimentação interativa, mas conforme observado por Peyton Jones, Blackwell e Burnett, a metáfora da planilha não admite nem mesmo a abstração mais básica: transformar uma expressão em uma função nomeada. Por isso, eles propuseram uma maneira de definir uma função em termos de uma planilha com células de entrada e saída designadas; chamaremos de folha de funções.
O início da planilha na Wikipedia fornece algumas dicas de como implementar uma:
Uma planilha é um aplicativo de computador interativo para organização e análise de dados em forma de tabela. Planilhas desenvolvidas como simulações computadorizadas de planilhas de contabilidade em papel. O programa opera com dados representados como células de uma matriz, organizadas em linhas e colunas. Cada célula da matriz é um elemento de modelo-visualização-controlador que pode conter dados numéricos ou de texto ou os resultados de fórmulas que calculam e exibem automaticamente um valor com base no conteúdo de outras células.
Aproveitando isso a partir do paradigma Outline of Model-View-Controller, conforme expresso nas bibliotecas Java . O autor continua mencionando applets (um pouco datado, foi escrito em 93-96) e menciona sua página da web que vai para http://csis.pace.edu/~bergin/Java/applets.htm (sim , applets) para o código da planilha correspondente http://csis.pace.edu/~bergin/Java/Spreadsheet.java
Apontarei que a totalidade da planilha não é tão grande neste applet 570 linhas, incluindo a documentação.
Dito isto, dependendo do idioma, você provavelmente poderia fazer tudo isso apenas com ponteiros de função em uma matriz esparsa.