Como Pyth pode ser melhorado? [fechadas]


24

Pyth está em desenvolvimento contínuo, o que significa que novos recursos estão sendo adicionados o tempo todo.

Eu quero fazer do Pyth um idioma melhor, então eu gostaria de saber quais recursos as pessoas estão procurando.

Este é o lugar das idéias que você tem para melhorar o Pyth.

Na sua resposta, indique:

  • O que você gostaria de ver alterado / adicionado.

  • Um exemplo de uso da mudança.

Vou comentar se estou planejando implementar a sugestão.

Verifique se a ideia que você deseja sugerir já foi sugerida. Ideias positivas que você gostaria de implementar.


Sugestões implementadas:


Isso estava no tópico de acordo com esta meta questão quando eu postei a pergunta, não está mais claro.


11
Por que este é um wiki da comunidade?
Geobits 7/10/2015

4
É mais uma discussão e coleção de sugestões. Ninguém deve ganhar ou perder representante por sugerir um recurso Pyth. Além disso, as sugestões implementadas provavelmente devem ser excluídas. Essa questão relacionada também é wiki da comunidade.
Dennis

9
Não tenho certeza de como me sinto sobre perguntas como essa. Percebo que isso faz sentido aqui, porque o PPCG provavelmente cobre a maioria (se não todos) da base de usuários do Pyth, mas não tenho certeza se devemos usá-lo como rastreador de problemas. Eu adicionei uma resposta ao meta post.
Martin Ender

Isso não deveria ser meta? Sério pessoal
Alec Teal

2
@AlecTeal "Quebra-cabeças de Meta Programação e Code Golf Stack Exchange é a parte do site em que os usuários discutem o funcionamento e as políticas do Code Golf Stack Exchange em vez de discutir quebra-cabeças de programação ou o próprio código de golfe". Meta é especificamente sobre esta comunidade . Realmente não pertence à meta. Se ele pertence ou não ao PPCG, atualmente, está sendo discutido no meta post que eu vinculei.
Martin Ender

Respostas:


7

Loops aninhados

Se você deseja aninhar forloops, atualmente precisa desperdiçar um byte para usá-lo F<var><seq>dentro de V<seq>ou vice-versa. Adoraria ter o mesmo que com lambdas, onde a variável usada para o loop mudaria ao aninhar loops.


Isso pode até ser extensível a outras coisas L, como redefinir, digamos, Ca segunda vez que foi chamado.
FryAmTheEggman


4

Importação mais fácil de módulos

Até agora, toda vez que eu uso $, tem sido algo como:

$from <module> import <function> as <pyth-function-with-same-arity>$
for example:
$from unicodedata import name as neg$

Pode haver uma nova função que resuma isso, por exemplo .$:

.$"unicodedata""name""neg"
.$"unicodedata name neg"

Ou usando a sintaxe mais recente, como a _Mque pode não ser fácil / possível:

_$unicodedata name$

Além disso, uma função com cada aridade pode receber um nome de macro com uma única letra, para que essas chamadas sejam mais curtas (exceto a _$opção).


4

adormecido

Isso causou problemas aqui , e o @ mbomb007 sugeriu colocá-lo como uma melhoria para o Pyth . Basicamente, agora, para dormir por um determinado número de segundos, preciso fazer algo como:

Q$__import__('time').sleep(Q)$

O que é irritante e longo como o diabo.


Você pode simular o comportamento de dormir com a função de data. f>.d1Q0por exemplo dorme Qsegundos.
Jakube 9/10

@Jakube Isso nem sempre funciona. De acordo com os documentos, no Unix, ele retorna por quanto tempo o programa está sendo executado. O que é ruim quando o usuário está inserindo a entrada.
Kirbyfan64sos

Que tal um presente que: J.d0f>-.d0JQ0. É bastante longo ... Eu concordo, uma função de dormir seria legal.
Jakube 9/10

4

Mais lambdas

Esta é realmente a ideia de FryAmTheEggman , mas estou publicando para divulgá -la.

Às vezes, acho que o uso de duas lambdas de um argumento diferentes reduziria o código, enquanto o uso de uma lambda de dois argumentos não o faria.

Seria bom ter L, Me os amigos redefinem uma função diferente toda vez que são usados; por exemplo, este código:

L*b2L*b3y5'5

pode compilar para:

@memoized
def subsets(b):
 return times(b,2)
@memoized
def read_file(b):
 return times(b,3)
imp_print(subsets(5))
imp_print(read_file(5))

A escolha exata das funções pode ser alterada, é claro.


3

Matrizes multidimensionais aprimoradas

Atualmente, é difícil usar matrizes multidimensionais. Por exemplo, o código C A[B][C][D]seria traduzido para @@@ABCDem Pyth. Algo como @A[BCD)seria muito melhor (embora não seja mais curto aqui). O mesmo também vale para X; A[B][C][D] = Eé atualmente X@@ABCDE, quando poderia ser XA[BCD)E.


3

Algumas idéias menores

  • Diferença absoluta, ie abs(val1 - val2). Atualmente é .a-<val1><val2>.
  • min/ maxpara valores. Atualmente, é hS,<val1><val2>/ eS,<val1><val2>ou a mesma coisa com mais valores. ( hS<seq>/ eS<seq>para seqüências é suficientemente curto.)

3

Não é um recurso Pyth, mas mesmo assim ...

Modularizar o código Pyth

Isso afeta apenas Pyth sob o capô. Algumas partes da implementação do Pyth são bastante confusas. Muitas variáveis ​​globais e outras coisas hacky.

Fiquei realmente frustrado alguns dias atrás, quando tentei usar algumas funções da implementação Pyth (como executar uma sequência de comandos Pyth) de outro script Python.

Algo como o seguinte seria bom:

from pyth import execute_pyth
print(execute_pyth(code='sQ', input='[1, 2, 3]'))

Bem, acho que isso é apenas um pedido de ajuda para Pyth5.



1

Elementos únicos

Atualmente, Pyth não tem uma maneira curta de obter elementos exclusivos de uma sequência. Você pode testar se é exclusivo, mas não consegue os itens realmente únicos. Atualmente, o caminho mais curto é :

{.-Q{Q

6 bytes! Compare isso com K, onde a obtenção de elementos únicos que é uma operação de um byte: =x.

Talvez .}funcione aqui?


Em que casos de uso (exceto um desafio) você está pensando?
Isaacg

@isaacg Não me lembro bem, mas tive que tentar obter os elementos exclusivos de uma lista antes e tive que usar outra coisa (que sempre foi mais longa).
kirbyfan64sos

Eu não sou um programador Pyth, mas sempre encontro isso no GolfScript / CJam: .&resp. _&aparece em muitas respostas. É muito útil.
Lynn

11
Como isso é diferente {Q?
isaacg

11
@isaacg Está classificado
Ypnypn 15/10
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.