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.

isaacg
fonte
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.

PurkkaKoodari
fonte
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).

FryAmTheEggman
fonte
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.

refi64
fonte
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.

Pietu1998
fonte
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.

Pietu1998
fonte
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.)
PurkkaKoodari
fonte
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.

Jakube
fonte
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?

refi64
fonte
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