The message below is being cross-posted from the LogoForum. Please
reply here at comp.lang.logo and it will be cross-posted back to the
LogoForum. The original author of this message is
pavel@[EMAIL PROTECTED]
Micheler wrote:
> So the comparison should be done by not using infix operators.
> Maybe the whole test suite should avoid infix operators,
> and should just check, if they are existing before testing them.
Why?
I'd suggest to have both tests -- tests with compare functions and tests
with compare operators.
Anyway, since last night I spent a lot of time thinking about using such
does-this-logo-have-these-primitives functionality.
I'm afraid that we may slip into making this so complex, that it would
become practically unusable.
For example, except is some special cases I do not see myself writing
programs with conditional use of primitives depending on the Logo
dialect. When I plan to use this checking functionality it is when I
want to see whether a specific Logo dialect can be used for a specific
problem. Or, when I want to ****t a Logo program to work into another
dialect -- I could use checks to see what things I should modify and
what should be kept unchanged.
Pavel
__._,_.___
LogoForum messages are archived at:
http://groups.yahoo.com/group/LogoForum
In article <60qourF1s491oU1@[EMAIL PROTECTED]
>,
Andreas Micheler <Andreas.Micheler@[EMAIL PROTECTED]
> wrote:
> John St. Clair wrote:
> > The message below is being cross-posted from the LogoForum. Please
> > reply here at comp.lang.logo and it will be cross-posted back to the
> > LogoForum. The original author of this message is
> > clemrutter@[EMAIL PROTECTED]
> >
> > I am still being asked the question: Is this a LOGO, or is this not a
> > LOGO? This is usually followed by the question If this is not a LOGO,
> > what do I need to do to make it LOGO? So can we as a group get
> > together to make up a definitive definition, and put together may be 5
> > one line tests that can be used to illustrate this?
> >
> > 1a. Basic syntax
> >
> > A test maybe: make "n 100 if 110 = sum first bf [ 7 10 23] :n [pr
> > [VALID]]
>
> Here's the first problem for aUCBLogo:
> "=" has a different meaning in aUCBLogo.
> So the comparison should be done by not using infix operators.
> Maybe the whole test suite should avoid infix operators,
> and should just check, if they are existing before testing them.
>
> I have written many "checks" for aUCBLogo.
> They could be some kind of basis for the tests,
> if someone rewrites them a bit. I can do that, too.
> But before we'd have to try to find
> the greatest common set of primitives,
> which could be used to write / rewrite the tests / checks.
> (But of course the aUCBLogo checks are incomplete. :-/ )
> Maybe we should meet in the Great Logo Atlas,
> but someone must start there writing down the brainstorming session.
> This could then be a place to look into
> and a do***ent which could be rewritten many times.
>
> Clem, can you place a basic article about
> "The Logo standard discussion"
> into the Atlas?
> Then if anyone wants to contribute to it,
> one can write to LogoForum, plus change the topic in the Atlas.
> So the contributers need some kind of write access to the Atlas.
> Can you set up some logins for those who want to contribute?
>
> > 1b. Basic graphics
> > A test may be: etc
> >
> > 2. Base system- both 1a and 1b validate
> >
> > 3. Base system with trig functions
> >
> > 4. UCB compliant
> >
> > 5. UCB compliant with extensions as listed.
> >
> > These are purely illustrative to start the conversation. But I
> > envisage we developers could aim for the tests. We could then describe
> > a logo as say 'Level 2 but missing the fill facility '.
>
> I like more the idea "sets of compliant primitives",
> as Pavel proposed. So one could ask a Logo:
>
> doesLogoSup****t "turtle
> true ;-)
> doesLogoSup****t [Core Turtle Lists Turtle3D Workspace
Communication/minimal]
> [true true true true true true] ;-)
>
> I have written something like this already once here:
> <http://groups.yahoo.com/group/LogoForum/message/13062>
>
> Pavel, Brian, Lionel, David, ..., can we all implement this function?
>
> We should all comply to "true and "false
> as being accepted as boolean results.
>
> I'd suggest some common sets,
> which "doesLogoSup****t" should know,
> (which might even overlap):
> (I take this mostly from the aUCBLogo help, # is a comment)
> (We can also make all items lowercase ones. We should discuss this!)
>
>
#________________________________________________________________________
> Communication/Transmitters/minimal [print type show]
> Communication/Receivers/minimal [readList readWord readChar]
> Communication/TerminalAccess/minimal [KeyP clearText]
> Communication/FileOpening/minimal [openRead openWrite openAppend
> openUpdate allOpen setReader setWriter Reader Writer]
> #we could of course also use setRead setWrite instead,
> #then I'd make some copydefs in aUCBLogo
> Communication/FileAccess/minimal [close closeall eraseFile renameFile
> setReaderPos setWriterPos ReaderPos WriterPos EOFP FileP]
> Communication/Directories/minimal [Files getWorkingDirectory changeDir
> makeDirectory DirectoryP]
> Communication/Environment/minimal [setEnv getEnv]
> Communication/****tInputAndOutput/optional [****tIn ****tOut]
> Communication/Timing/minimal [Time TimeMilli]
> Communication/Timing/optional [TimeFine MIPS]
> Communication/DynamicLibraries/optional [DLCall]
> Communication/OperationSystem/minimal [LogoVersion doesLogoSup****t]
> #Communication/minimal would contain all items of the minimal items
>
#________________________________________________________________________
> Arithmetic/LogicalOperations/minimal [and or not]
> Arithmetic/LinearOperations/minimal [Sum Difference Minus Product]
> Arithmetic/NumericOperations/minimal [Quotient Modulo abs]
> Arithmetic/NumericOperations/optional [min max]
> Arithmetic/NumberGenerators/optional [iSeq rSeq]
> Arithmetic/RandomNumbers/minimal [random]
> Arithmetic/RandomNumbers/optional [reRandom rnd]
> Arithmetic/IrrationalFunctions/minimal [sqrt power exp ln]
> Arithmetic/IrrationalFunctions/optional [log10 Norm]
> Arithmetic/TrigonometricFunctions/minimal [Sin Cos Tan ArcSin ArcCos
ArcTan]
> Arithmetic/TrigonometricFunctions/optional [radSin radCos radTan
> radArcSin radArcCos radArcTan]
> Arithmetic/TypeConverters/minimal [Int]
> Arithmetic/TypeConverters/optional [round trunc Signum]
> Arithmetic/PrintFormatting/minimal [Form]
> Arithmetic/BitwiseOperations/optional [BitAnd BitOr BitXOR BitNot]
> Arithmetic/ArithmeticPredicates/minimal [lessP greaterP]
> Arithmetic/ArithmeticPredicates/question [less? greater?]
> Arithmetic/ArithmeticPredicates/optional [lessEqualP greaterEqualP
primeP]
>
#________________________________________________________________________
> DataStructurePrimitives/Constructors/minimal [Word List Sentence fPut
> lPut combine]
> DataStructurePrimitives/Constructors/optional [Array Table replace]
> DataStructurePrimitives/Rearrangers/optional [reverse sort shuffle]
> #"sort" is not yet defined in aUCBLogo. But it would be very useful.
> DataStructurePrimitives/Selectors/minimal [first last butFirst butLast
Item]
> DataStructurePrimitives/Selectors/optional [pick Items remove remDup]
> DataStructurePrimitives/Mutators/minimal [setItem]
> DataStructurePrimitives/Mutators/optional [setItems removeItem]
> DataStructurePrimitives/Stacks/optional [push pop queue dequeue]
> DataStructurePrimitives/Predicates/minimal [WordP ListP emptyP equalP
> MemberP NumberP]
> DataStructurePrimitives/Predicates/optional [ArrayP CharP beforeP
> substringP]
> DataStructurePrimitives/Queries/minimal [count char ASCII]
> DataStructurePrimitives/Queries/optional [Member lowerCase upperCase]
> DataStructurePrimitives/Queries/Objects [this]
>
#________________________________________________________________________
> ConditionalExecution/minimal [if ifElse throw catch]
> ConditionalExecution/optional [error test iftrue iffalse _maybeoutput]
>
#________________________________________________________________________
> Loops/minimal [forever repeat repcount while for]
> Loops/optional [until do_while do_until break continueLoop]
>
#________________________________________________________________________
> VariableDefinition/minimal [make local Thing]
> VariableDefinition/optional [localmake]
>
#________________________________________________________________________
> ProcedureDefinition/minimal [to copyDef define]
> ProcedureDefinition/optional [Text fullText]
>
#________________________________________________________________________
> ControlStructures/minimal [stop output pause continue goTo Tag run bye]
> ControlStructures/optional [ignore wait runResult check]
>
#________________________________________________________________________
> TemplateBasedIteration/optional [apply foreach map filter find reduce
> crossmap cascade transfer]
>
#________________________________________________________________________
> WorkspaceManagement/WorkspaceQueries/minimal [Contents Primitives
> Procedures Names Arity LogoLanguage]
> WorkspaceManagement/Inspection/minimal [printOut]
> WorkspaceManagement/WorkspaceControl/minimal [help save load]
> WorkspaceManagement/WorkspaceControl/optional [setCaseIgnored]
> WorkspaceManagement/WorkspacePredicates/minimal [ProcedureP PrimitiveP
> definedP NameP]
> WorkspaceManagement/WorkspacePredicates/optional [CaseIgnoredP]
> WorkspaceManagement/Editing/optional [edit edall]
> WorkspaceManagement/Erasing/minimal [erase]
> WorkspaceManagement/Erasing/optional [erall reset]
> WorkspaceManagement/Macros/optional [_Macro MacroP]
>
#________________________________________________________________________
> Graphics/RelativeTurtleMotion/minimal [forward back left right]
> Graphics/RelativeTurtleMotion/3d [leftRoll rightRoll upPitch downPitch]
> Graphics/AbsoluteTurtleMotion/minimal [Home setXY setPos setHeading]
> Graphics/AbsoluteTurtleMotion/optional [setX setY]
> Graphics/AbsoluteTurtleMotion/3d [setXYZ setPosXYZ setOrientation]
> Graphics/TurtleMotionQueries/minimal [Pos Heading Pixel]
> Graphics/TurtleMotionQueries/optional [towards Distance]
> Graphics/TurtleMotionQueries/3d [PosXYZ Orientation towardsXYZ
DistanceXYZ]
> Graphics/TurtleControl/minimal [showTurtle hideTurtle]
> Graphics/TurtleControl/optional [wrap Fence WindowMode]
> Graphics/WindowControl/minimal [clean clearScreen]
> Graphics/WindowControl/optional [TextScreen fullScreen splitScreen]
> Graphics/WindowControl/3d [perspective setEye]
> Graphics/TurtleAndWindowQueries/minimal [shownP]
> Graphics/TurtleAndWindowQueries/optional [MousePos]
> Graphics/PenAndBackgroundControl/minimal [PenDown PenUp setPenColor
> setScreenColor]
> Graphics/PenAndBackgroundControl/optional [setFloodColor setPenSize]
> Graphics/PenQueries/minimal [PenDownP PenColor]
> Graphics/PenQueries/optional [PenSize ScreenColor FloodColor]
> Graphics/DrawingCurves/minimal [circle Arc]
> Graphics/DrawingCurves/optional [Arc2 Ellipse EllipseArc]
> Graphics/DrawingText/minimal [Label]
> Graphics/DrawingText/optional [LabelSize setLabelSize LabelFont
> setLabelFont LabelAlign setLabelAlign]
> Graphics/DrawingFilledShapes/optional [fill fillRect fillCircle
> fillEllipse fillPie]
> Graphics/DrawingFilledShapes/3d/optional [Sphere Ellipsoid Cylinder
> Polygon Surface]
> Graphics/Lighting/3d [setLightPos]
> Graphics/Pictures/optional [saveScreen setSaveSize]
> Graphics/DirectGraphics/minimal [setPixel]
> Graphics/DirectGraphics/optional [RGB HSB]
> GUIprogramming/StandardDialogs/optional [MessageBox DirSelector
> FileSelector getNumberFromUser getTextFromUser]
>
#________________________________________________________________________
> SoundProgramming/PCSpeaker/optional [Tone Sound]
> SoundProgramming/WaveSound/optional [playWave]
>
#________________________________________________________________________
>
>
> This is just an idea,
> but maybe we can develop something out of it.
> Maybe we can use the file format of my ideas
> as a file to work with in the Atlas?
>
> > There are lots of issues- but could we have a go!
>
> Yes! I hope this will start the discussion.
>
> I'm currently trying to orthogonalise aUCBLogo as much as possible,
> so that different features can be in separate modules,
> maybe even in DLLs.
> This might be a good time to adapt aUCBLogo to comply to any standard.
>
> Cheers,
> Andreas


|